F:PARAMはH:CommandButtonで動作しません
質問
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>
解決
JSF 1.xで、 <f:param>
でのみサポートされています <h:commandLink>
, <h:outputLink>
と <h:outputFormat>
, 、 ありませんで <h:commandButton>
. 。そのサポートはJSF 2.0以降のみです。
少なくとも4つのオプションがあります。
使用する
<h:commandLink>
代わりは。必要に応じて、CSSを使用してボタンのように見えるようにスタイリングします。例についても参照してください JSFコマンドButton URLパラメーター.使用する
<f:attribute>
また<f:setPropertyActionListener>
代わりは。参照してください JSFでのコミュニケーション.メソッド引数としてそれらを渡します
action="#{myBean.action('param1', 'param2')}"
. 。 Tomcat 7は、EL 2.2をサポートするサーブレット3.0コンテナで、渡し方法の引数をサポートします。あなたはあなたを確認する必要がありますweb.xml
宣言されたサーブレット3.0。参照してください JSF 1.2のELによるパラメーターを使用したメソッドを呼び出します.JSF 2.0にアップグレードします。 JSF 1.xよりも多くの利点を提供します。参照してください JSF 1.2からJSF 2.0への移行 と JSF 2.0でのコミュニケーション.