我正在使用eclipse 3.6.2(Helios),Tomcat 7,MyFaces 1.2.9
当我将f:param用于h:commandLink时我没有问题但是当我把f:param放入h:commandButton时它不起作用。有什么问题?
此示例工作正常:
<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>
但它没有
<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
答案 0 :(得分:8)
在JSF 1.x中,<f:param>
仅在<h:commandLink>
,<h:outputLink>
和<h:outputFormat>
支持,而不在<h:commandButton>
。该支持仅适用于JSF 2.0及更新版本。
您至少有4个选项:
请改用<h:commandLink>
。如有必要,使用CSS将其设计为看起来像一个按钮。请参阅示例JSF commandButton URL parameters。
请改用<f:attribute>
或<f:setPropertyActionListener>
。另请参阅Communication in JSF。
将它们作为方法参数action="#{myBean.action('param1', 'param2')}"
传递。 Tomcat 7是一个servlet 3.0容器,支持EL 2.2,后者又支持传递方法参数。您只需要确保您的web.xml
声明符合Servlet 3.0。另请参阅Invoking methods with parameters by EL in JSF 1.2。
升级到JSF 2.0。它比JSF 1.x提供了许多优势。另请参阅Migrating from JSF 1.2 to JSF 2.0和Communication in JSF 2.0。