我在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>
答案 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?