有没有一种方法可以在操作之后重新执行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>

+0

解决方法是执行dataTable的更新,而不是'通过调用postConstruct注释的方法'从数据库中提取新数据并将它们放入datatable中使用ajax' –

+0

uhhmmmm? – Kukeltje

我会建议将您用来填充您的数据表到它自己的方法,以便它可以被称为必要时通过您的代码@ PostConstruct,操作方法和/或Ajax方法。

+0

是的,但是如果OP想要调用的代码是完整的postconstruct注释方法,那将会是过度的 – Kukeltje

+0

因此,我不建议从另一种方法调用完整的@PostConstruct方法。 – John

+0

小心解释为什么?危险是什么?因为我没有看到任何风险/危险/问题,然后我们会有两个相互竞争的(有见解的)答案,这不是*的意义......意见......它是关于确切的,具体的(一个thruth)答案 – Kukeltje