更新ui:repeat中的空整数数组

时间:2014-07-25 09:20:20

标签: arrays jsf uirepeat

我想使用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。

1 个答案:

答案 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表标签来进行格式化。

正如您在服务器日志中看到的那样,值已正确设置。