Ich habe Eingabefelder und Datentabelle auf derselben Seite. Wenn Benutzer neue Daten hinzufügen, sollten Daten zur Datentabelle hinzugefügt werden, ohne die Seite zu aktualisieren.JSF-Datentabelle aktualisieren, wenn Daten ohne Refresh-Seite hinzugefügt werden
Um dies zu erreichen, habe ich versucht, den folgenden Code
hospials.xhtml:
<h:form>
<h:outputLabel>Name:</h:outputLabel>
<h:inputText value="#{hospitalsBean.ename}"/>
<h:outputLabel>Address:</h:outputLabel>
<h:inputText value="#{hospitalsBean.hospital.address}"></h:inputText>
<h:commandButton value="A">
<f:ajax event="click" render="table" listener="#{hospitalsBean.command()}"></f:ajax>
</h:commandButton>
</h:form>
<h:dataTable id="table" value="#{hospitalsBean.hospitals}" var="hospital">
<h:column>
<f:facet name="header">Name</f:facet>
#{hospital.name.english}
</h:column>
<h:column>
<f:facet name="header">Address</f:facet>
#{hospital.address}
</h:column>
</h:dataTable>
HospitalsBean.java:
private Hospital hospital = new Hospital();
private ArrayList<Hospital> hospitals = new ArrayList<>();
private Part file; // +getter+setter
public ArrayList<Hospital> getHospitals() {
return MongoCrud.getHospitals();
}
public void setHospitals(ArrayList<Hospital> hospitals) {
this.hospitals = hospitals;
}
public Hospital getHospital() {
return hospital;
}
public void setHospital(Hospital hospital) {
this.hospital = hospital;
}
public void command() throws IOException {
MongoService.insertData("Hospital", Finals.gson.toJson(hospital));
}
aber wenn ich Daten einfügen, um MongoDB die Krankenhausvariable hat keinen Namen und Adresse
in Ihrem Command oder in der Ajax-Ereignis sollte es eine Eigenschaft Update sein, wo Sie auf die Datentabelle wie update = „table“ –
@Azazel beziehen kann: das Update-Attribut ist für PrimeFaces Komponenten. Dies ist einfach jsf, wo es das Attribut 'render' sein sollte. Siehe http://stackoverflow.com/questions/25339056/understanding-process-and-update-attributes-of-primefaces. Und tatsächlich ist dies bereits auf dem Ajax-Tag in der Schaltfläche vorhanden. – Kukeltje
versuchen Sie mit 'execute = "ename_id address_id" 'mit dem Ajax-Tag, um die EditableValueHolders auszuführen. Dazu müssen Sie Ihren Eingaben ID-Attribute hinzufügen ... und mit dem Ausführen werden Sie diese Komponenten im Server ausführen ODER fügen Sie 'execute =" @ form "' hinzu, um alle Komponenten innerhalb des '