0
<h:form>
    <ui:repeat value="#{sampleManagedBean.food}" var="food">
        <h:commandLink value="Name" action="#{sampleManagedBean.outcome}">
            <f:param name="name" value="ssd" />
            <f:param name="v" value="#{food.boy}" />
        </h:commandLink>
        <h2>#{food.boy}</h2>
    </ui:repeat>
</h:form> 

我无法获得<f:param>基于<ui:repeat var>. 我只能得到第一个硬编码的。

4

2 回答 2

0

ui:repeat是一个 UI 组件,而f:param它是一个标记处理程序(如 JSTL)。Taghandlers 在视图构建期间运行,在视图渲染期间运行的 UI 组件之前运行(请参阅此处)。

在我们的例子中,这意味着在视图构建阶段f:param#{food.boy}. c:forEach没问题,但是如果我们调用某种 ajax 操作来更改表单的大小
#{sampleManagedBean.food}并重新呈现表单,我们将不会在页面上看到任何更改。因为部分重新渲染 (ajax) 只影响 UI 组件树。c:forEach介于硬编码和 之间ui:repeat,我们必须重新加载页面才能看到更改。

于 2012-09-12T12:56:58.130 回答
0

试试这个方法

    <h:form>
    <ui:repeat value="#{sampleManagedBean.food}" var="food">
        <h:commandLink value="Name" action="#{sampleManagedBean.outcome}">
            <f:setPropertyActionListener value="ssd" target="#{sampleManagedBean.name}" />
            <f:setPropertyActionListener value="#{food.boy}" target="#{sampleManagedBean.v}" />
        </h:commandLink>
    </ui:repeat>
    </h:form>
于 2012-10-10T05:08:16.187 回答