1

我得到了<f:param>ie,在我的 ajax 调用期间的menuItemIndex价值。null是因为它在吗<h:graphicImage>???有人可以建议吗?注意:如果我使用<h:commandLink>而不是<h:graphicImage>.

 <c:forEach items="#{cc.attrs.value}" var="menuItem" varStatus="loopItem">
 ....
    <ui:fragment rendered="#{menuItem.hasChildren}">
        <h:graphicImage library="images" name="#{menuItem.symbol}">
           <f:ajax render=":fatcaForm:myMenu:menuID" event="click" listener="#{menuBean.refreshMenu}" />
           <f:param name="menuItemIndex" value="{loopItem.count}" />
        </h:graphicImage>
    </ui:fragment>
  ....
 </c:forEach>
4

1 回答 1

1

<h:graphicImage>不是命令组件,因此它根本不支持<f:param>子组件。仅当<f:param>嵌套在UICommand组件中时才有效,例如<h:commandLink>您自己发现的。

所以,这应该这样做:

<h:commandLink action="#{menuBean.refreshMenu}">
    <h:graphicImage library="images" name="#{menuItem.symbol}" />
    <f:ajax render=":fatcaForm:myMenu:menuID" />
    <f:param name="menuItemIndex" value="#{loopItem.count}" />
</h:commandLink>

(请注意,我也修复了 EL 语法错误<f:param value>


与具体问题无关,您使用的<h:graphicImage library>方式并不完全正确。请仔细阅读JSF资源库是干什么用的,应该如何使用?

于 2012-12-18T19:44:34.043 回答