我目前的JSF版本是2.1,我想找到一个简短的解决方案,将用户输入的String
放入一个List
。在托管bean中:
@ManagedBean
@SessionScoped
public class MyBean{
private List<String> values;
public void List<Integer> getIdentifiers(){
List<Integer> lst = new ArrayList<Integer>();
//...
return lst;
}
//GET, SET, OTHER STUFF
}
和标记:
<c:forEach items="#{myBean.identifiers}" var="id">
<h:inputText value="__WHAT?__" id="input#{id}" />
</c:forEach>
我需要将用户输入的每个值放入inputText
values
List<String>
中。我怎么能这样做或者是否可能呢?
UPD:我需要在<c:forEach>
循环中完全这样做,因为我可能会添加一些其他输入字段,例如rich:calendar
,它们将按如下方式呈现:
<c:forEach items="#{myBean.identifiers}" var="id">
<c:choose>
<c:when test="__calendar_needed__">
<rich:calendar />
</c:when>
<c:when test="__input_needed__">
<h:inputText value="__WHAT?__" id="input#{id}" />
</c:when>
</c:choose>
</c:forEach>
答案 0 :(得分:1)
由于您使用的是JSF 2,因此可以使用<ui:repeat>
标记替代<c:forEach>
(因为mixing JSTL with JSF can lead to strange behavior)。
此外,您可以直接将value
属性设置为指向bean中的values
集合(当然,您必须提供相应的访问者)。集合中的每个对象都将被称为item
:
<ui:repeat value="#{myBean.values}" var="item">
<h:inputText value="#{item}" />
</ui:repeat>