JSF: Seite neu Laden, nachdem die Daten ändern
Mit einem DataModel<MyObject>
, ich fülle eine Tabelle mit Daten nach diese Antwort
Nun am Ende jeder Zeile habe ich eine löschen-Taste, die Anrufe, die eine bestimmte Methode, meine Bohne. Die Daten sauber gelöscht. Aber wie die Daten, die geändert wurde, nachdem das löschen, ich möchte die Seite neu laden, um die änderungen widerzuspiegeln.
Mein Versuch war es, fügen Sie ein navigation-rule in faces-config.xml
:
übersicht
/übersicht.jsp
deletedsubscription
/übersicht.jsp
Wenn ich <redirect />
oder nicht, so oder so ist es nicht nachladen oder etwas anderes zu tun überhaupt. Die Daten werden gelöscht, daher die bean die Methode tatsächlich aufgerufen wird.
Mein button sieht so aus:
<h:dataTable border="1" value="#{overviewBean.overviewModel }" var="item" first="0">
<h:column id="column13">
<f:facet name="header">
<h:outputText value="#{messages.overviewDeleteItem }"></h:outputText>
</f:facet>
<h:commandButton action="#{overviewBean.deleteItem}" value="X"/>
</h:column>
</h:dataTable>
Einstellung das Attribut type="submit"
löst tatsächlich das problem. Die Seiten bekommt reloaded.
Meine Frage ist nun: ist der submit-wirklich erforderlich? Nicht, JSF (Apache MyFaces) haben einen Mechanismus der Verwendung von AJAX zu beseitigen, die Zeile einfach gelöscht?
Danke für den Versuch zu helfen, eine JSF-Neuling.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie einfach den Eintrag aus der Liste sichern des datamodel. Die änderungen werden in das Modell.
Grundsätzlich:
Eine Umleitung danach ist nicht notwendig. Wenn die action-Methode void zurückgibt (oder
null
), es wird gehen Sie zu der gleichen Seite sowieso.Ajaxical Funktionen wurden eingeführt, JSF 2.0, aber wenn ich mich nicht Irre, bist du immer noch auf JSF 1.x. Ihre beste Wette ist, dann die Annahme einer 3rd-party-Bibliothek mit Komponenten wie Ajax4jsf (derzeit Teil von RichFaces), für den Fall, dass Sie dies für notwendig halten.
void
eclipse klagte über Sie in der JSP-editor... Werde es wieder versuchen.null
.#{}
Dinge) Validierung kann es gehen Verwüstung. Ich einfach abschalten oder niedriger diese Validierungen.