f:param不能与h:graphicImage一起使用

时间:2012-12-18 18:57:50

标签: jsf-2

我在ajax调用期间收到<f:param>,即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>

1 个答案:

答案 0 :(得分: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>

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


对具体问题

无关,您使用<h:graphicImage library>的方式并不完全正确。请仔细阅读What is the JSF resource library for and how should it be used?