f:param不适用于h:commandButton

Hos*_*oka 2 eclipse jsf myfaces tomcat7

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 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参数的示例.

  2. 使用<f:attribute><f:setPropertyActionListener>代替.另见JSF中的通信.

  3. 将它们作为方法参数传递action="#{myBean.action('param1', 'param2')}".Tomcat 7是一个servlet 3.0容器,支持EL 2.2,后者又支持传递方法参数.您只需要确保web.xml声明符合Servlet 3.0.另请参见在JSF 1.2中使用EL调用参数的方法.

  4. 升级到JSF 2.0.它比JSF 1.x提供了许多优势.另请参阅从JSF 1.2迁移到JSF 2.0JSF 2.0中的通信.