有没有一种方法可以在操作之后重新执行postconstract init方法?
问题描述:
我有一个数据表从数据库中填充具有postconstruct注释的初始化函数,问题是,当我删除表中的一行表数据并没有改变,甚至认为该实例实际上是从数据库中删除,所以我想知道如果我可以再次执行init函数,那么它会从DB中获取新数据,并使用ajax将它们放入datatable中。有没有一种方法可以在操作之后重新执行postconstract init方法?
@ManagedBean
@SessionScoped
public class Compte implements Serializable{
\t /**
\t *
\t */
\t private static final long serialVersionUID = -7177239517089845251L;
\t
\t private int id_compte;
\t private int id_agence;
\t private int id_client;
\t private String num_compte;
\t private double solde;
\t private String date_creation_compte;
\t public ArrayList<Compte> comptes;
\t
\t dao d = new dao();
\t
\t public Compte() {
\t \t super();
\t \t // TODO Auto-generated constructor stub
\t }
\t
\t @PostConstruct
public void init() {
\t \t
\t \t ExternalContext ec =
\t \t \t \t FacesContext.getCurrentInstance().getExternalContext();
\t \t HttpSession session = (HttpSession) ec.getSession(false);
\t \t if(session.getAttribute("idagence")!=null){
\t \t \t comptes=d.getComptesAgc((String)session.getAttribute("login"));
\t \t }else{
\t \t comptes=d.getComptes((String)session.getAttribute("login"));}
}
<ui:composition template="./WEB-INF/template/template.xhtml">
<ui:param name="titre" value="Liste de Comptes"/>
<ui:define name="content">
<ice:form id="form">
<style type="text/css">
.ui-datatable-odd {
background-color:lightgray !important;
background-position-y: -1400px;
}
</style>
\t \t \t <ace:dataTable id="cptTable" value="#{compte.comptes}"
\t \t \t \t var="cpt" paginator="true" paginatorPosition="bottom" rows="10">
...
</ace:dataTable>
答
我会建议将您用来填充您的数据表到它自己的方法,以便它可以被称为必要时通过您的代码@ PostConstruct,操作方法和/或Ajax方法。
解决方法是执行dataTable的更新,而不是'通过调用postConstruct注释的方法'从数据库中提取新数据并将它们放入datatable中使用ajax' –
uhhmmmm? – Kukeltje