【问题标题】:how to pass value from inputtext in foreach loop JSF如何在foreach循环JSF中从inputtext传递值
【发布时间】:2014-01-14 15:06:51
【问题描述】:

我已经得出结论,如果我将 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>

【问题讨论】:

  • 您是否按照我在您的other question 中的建议尝试将&lt;c:forEach&gt; 替换为&lt;h:dataTable&gt;?另外,您需要 &lt;h:form&gt; 围绕任何更新值/导致操作的内容。
  • 真的会改变绑定只包含一个值的问题吗?
  • 为什么要将输入组件绑定到视图,以便稍后将其值作为参数传递?只需传递list[7] 作为第二个参数!顺便说一句,在EL中不需要显式调用toString()方法,因为它是由框架调用来显示当前对象值的。
  • 仍然无法让方法调用正常工作。动作参数有问题吗?
  • 在 list[7] 中发送将不起作用,因为如果我更新文本字段,它将不会延续到 list[7] 它只会传递原始值

标签: jsf binding jstl


【解决方案1】:

在此构造中,&lt;c:forEach&gt; 在视图构建期间运行,生成 JSF 组件树。实际上,您最终会在 JSF 组件树中拥有多个物理上的 &lt;h:inputText&gt; 组件,每个组件都具有 same 绑定:

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

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

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

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

如果不是StringNumberBoolean 等标准类型,则在必要时提供Converter

另见:

【讨论】:

  • 你的意思是我应该有一个类来模拟“select xxx from”的输出?所以我可以设置列表[7],这在现在是不可能的。因为它似乎是只读的。
  • 它不是只读的。我会努力弄清楚和修复“看起来”的部分。
  • 可能是真的,它不是只读的。但它总是获取原始值,而不是输入字段设置的值。
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 2014-09-29
  • 2013-12-26
  • 1970-01-01
相关资源
最近更新 更多