Mit <ui:repeat><h:inputText - > auf der Liste<String> nicht update-Modell-Werte
Hier ist das Szenario (vereinfacht):
Es ist eine Bohne (nennen wir es mrBean
) mit einem Mitglied und die entsprechenden Getter/setter:
private List<String> rootContext;
public void addContextItem() {
rootContext.add("");
}
JSF-code:
<h:form id="a_form">
<ui:repeat value="#{mrBean.stringList}" var="stringItem">
<h:inputText value="#{stringItem}" />
</ui:repeat>
<h:commandButton value="Add" action="#{mrBean.addContextItem}">
<f:ajax render="@form" execute="@form"></f:ajax>
</h:commandButton>
</h:form>
Das problem ist, wenn Sie auf die Schaltfläche "Hinzufügen" - Taste werden die Werte, die eingegeben wurden, in den <h:inputText/>
vertreten, dass die Zeichenfolgen in der stringList
werden nicht ausgeführt.
Eigentlich die mrBean.stringList
setter (setStringList(List<String> stringList)
) wird nie aufgerufen.
Ahnung warum?
Einige info -
Ich bin mit MyFaces JSF 2.0 auf Tomcat 6.
InformationsquelleAutor Ben | 2012-05-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
String
- Klasse ist unveränderlich und nicht mit einem setter für den Wert. Die get-Methode ist im Grunde dieObject#toString()
Methode.Müssen Sie, um die get/set wird der Wert direkt auf die
List
statt. Sie können tun, dass durch die-Liste-index, das durch<ui:repeat varStatus>
.Benötigen Sie keine Set-Methode für die
stringList
entweder. EL erhalten Sie das Element, indemList#get(index)
und das Produkt durchList#add(index,item)
.varStatus
.