我想使用ui:repeat来填充一个整数数组的值,该数组最初是空的,来自inputText。我遵循了这里的解释,但它对我不起作用。我的UI是:
<ui:repeat value="#{controllerBean.schedule.scheduleTimes}" var="v" varStatus="loop">
<h:outputText value="Shedulte Time #{loop.index + 1}">
</h:outputText>
<p:inputText value="#{controllerBean.schedule.scheduleTimes[loop.index]}">
</p:inputText>
</ui:repeat>
controllerbean是被管理的bean, schedule是模型,scheduleTimes是我的模型中的Integer[]数组,带有setter和getter。在ui上提供了一些值之后,每个索引处的数组值仍然为空。
您需要一个到
Integer
的转换器,因为在JSF中所有的值默认情况下都被视为String
。
<ui:repeat value="#{controllerBean.schedule.scheduleTimes}" var="v" varStatus="loop">
<h:outputText value="Shedulte Time #{loop.index + 1}">
</h:outputText>
<p:inputText value="#{controllerBean.schedule.scheduleTimes[loop.index]}" converter="javax.faces.Integer">
</p:inputText>
</ui:repeat>
现在这个例子对我来说就像魅力一样。
我之前的回答是不正确的,因为JSF会自动转换基本类型。但是,集合需要转换器,因为在运行时无法确定预期的类型。
尽管如此,该示例可以使用转换器或不使用转换器。因此,请确保controllerBean
具有非作用域(没有作用域注释)以外的作用域。否则,每次访问bean时都会重新创建它。
好吧,也与请求范围我的代码工作得很好。请查看我正在使用
我用纯JSF h:inputText替换了素面p:inputText,但我认为这无关紧要。我还添加了一些html表格标签来进行格式化。
您可以在服务器日志中看到值设置正确