我想使用ui:repeat来填充inputText中最初为空的整数数组的值。我按照here中的解释,但它对我不起作用。我的用户界面是:
<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>
contollerBean是托管bean,schedule是model,scheduleTimes是我的模型中的Integer []数组,带有setter和getter。在ui上提供一些值之后,每个索引处的数组值仍然为null。
答案 0 :(得分:0)
您需要转换为 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时都会重新创建bean。
嗯,同样请求范围我的代码工作正常。请检查 example I'm using
我用纯JSF h:inputText替换了primefaces p:inputText,但我认为它不重要。我还添加了一些html表标签来进行格式化。
正如您在服务器日志中看到的那样,值已正确设置。