我得出结论,如果我将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>
答案 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]}" />
如果不是Converter
,String
,Number
等标准类型,则必要时提供Boolean