Ben*_*Ben 9 string jsf list jsf-2 uirepeat
这是场景(简化):
有一个bean(称之为mrBean)与成员和适当的getter/setter:
private List<String> rootContext;
public void addContextItem() {
rootContext.add("");
}
Run Code Online (Sandbox Code Playgroud)
JSF代码:
<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>
Run Code Online (Sandbox Code Playgroud)
问题是,当单击"添加"按钮时,不会执行<h:inputText/>在表示字符串中的值中输入的值stringList.
实际上,从不调用mrBean.stringListsetter(setStringList(List<String> stringList)).
知道为什么吗?
一些信息 - 我在Tomcat 6上使用MyFaces JSF 2.0.
Bal*_*usC 25
该String班是不可改变的,不具有该值的制定者.吸气剂基本上就是Object#toString()方法.
您需要直接获取/设置值List.您可以通过列表索引执行此操作<ui:repeat varStatus>.
<ui:repeat value="#{mrBean.stringList}" varStatus="loop">
<h:inputText value="#{mrBean.stringList[loop.index]}" />
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
你不需要一个setter stringList.EL将获取该项目List#get(index)并设置项目List#add(index,item).