f:param不适用于h:commandButton

时间:2011-11-30 23:23:53

标签: eclipse jsf tomcat7 myfaces

我正在使用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>

1 个答案:

答案 0 :(得分:8)

在JSF 1.x中,<f:param>仅在<h:commandLink><h:outputLink><h:outputFormat>支持,而不在<h:commandButton>。该支持仅适用于JSF 2.0及更新版本。

您至少有4个选项:

  1. 请改用<h:commandLink>。如有必要,使用CSS将其设计为看起来像一个按钮。请参阅示例JSF commandButton URL parameters

  2. 请改用<f:attribute><f:setPropertyActionListener>。另请参阅Communication in JSF

  3. 将它们作为方法参数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

  4. 升级到JSF 2.0。它比JSF 1.x提供了许多优势。另请参阅Migrating from JSF 1.2 to JSF 2.0Communication in JSF 2.0