2017-03-08 2 views
0

Ich habe eine Datentabelle, die von DB mit Init-Funktion gefüllt ist, die PostConstruct Annotation hat, das Problem ist, dass, wenn ich eine Zeile in der Tabelle löschen die Tabelle Daten nicht ändert, auch dachte, dass Instanz tatsächlich aus der Datenbank gelöscht wird, so habe ich mich gefragt Wenn ich die Init-Funktion wieder ausführen könnte, bringt sie die neuen Daten aus der DB und legt sie mit ajax in die datTable.Gibt es eine Möglichkeit, die postconstract-Init-Methode nach einer Aktion erneut auszuführen?

@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

Die Lösung besteht darin, ein Update Ihrer dataTable durchzuführen, nicht um 'die neuen Daten aus der DB zu holen und sie in die datTable mit ajax' –

+0

uhhmmmm durch Aufruf der annotierten Methode postConstruct zu bringen? – Kukeltje

Antwort

0

würde ich empfehlen, den Code platzieren, die Sie verwenden, um Ihre Datentabelle in seine eigene Methode zu füllen, so dass sie bei Bedarf von Ihrem aufgerufen werden können @ PostConstruct, Aktionsmethode und/oder Ajax-Methode.

+0

Ja, aber wenn der Code, den das OP aufrufen will, die vollständige Methode postconstruct annotiert ist, wäre das Overkill – Kukeltje

+0

. Daher würde ich nicht empfehlen, die volle @PostConstruct-Methode von einer anderen Methode aufzurufen. – John

+0

Warum erklären? Was sind die Gefahren? Weil ich keine Risiken/Gefahren/Probleme sehe und dann haben wir zwei konkurrierende (rechthaberische) Antworten und das ist nicht, worum es in StackOverflow geht ... Meinungen ... es geht um exakte, spezifische (eine Wahrheit) Antworten – Kukeltje

Verwandte Themen