在ui:repeat中更新一个空整数数组



我想使用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表格标签来进行格式化。

您可以在服务器日志中看到值设置正确

相关内容

  • 没有找到相关文章

最新更新