如何在foreach循环JSF中传递inputtext中的值

时间:2014-01-14 15:06:52

标签: jsf binding jstl

我得出结论,如果我将h:form放在foreach循环中,则无法调用该函数。

如果我将表格放在外面并且按钮位于foreach外面,它将调用正确的功能。但是如何通过每行一个按钮获得所需的结果,我可以将输入文本作为新值传递给函数?

请注意,getSeriesForPlayerIInfo应该按原样运行

<c:forEach var="list" items="#{serviceSeries.getSeriesForPlayerInfo(club.name, player.stringID, aSerie, calendarBean)}">
            <h:form>
            <h:outputText value="   #{list[0] }" />
            <h:outputText value="   #{list[1] }" />
            <h:outputText value="#{serie.getSerieDateString(list[2]) }" />
            <h:outputText value="#{list[3]}"/>
            <h:outputText value="   #{list[4] }" />
            <h:outputText value="   #{list[5] }" />
            <h:outputText value="   #{list[6] }" />
            <h:inputText value="   #{list[7] }" />
            <h:outputText value="   #{list[8] }" />


            <h:commandButton action="#{serviceSeries.PlayerSerie}" value="Uppdatera">
            </h:commandButton>  
            </h:form>
            </c:forEach>

1 个答案:

答案 0 :(得分:0)

在此构造中,<c:forEach>在视图构建时运行,生成JSF组件树。在效果中,您最终在JSF组件树中有多个<h:inputText>个物理组件,每个组件都具有相同的绑定:

<h:inputText ... binding="#{serieScore}" />
<h:inputText ... binding="#{serieScore}" />
<h:inputText ... binding="#{serieScore}" />
...

这不对!您将物理上不同的组件绑定到同一个bean属性,从而导致在所有这些组件之间共享混乱的视图状态。

完全摆脱binding。无论如何,这是工作的错误工具。您应该以正确的方式使用value属性来获取/设置值。

<h:inputText value="#{list[7]}" />

如果不是ConverterStringNumber等标准类型,则必要时提供Boolean

另见: