メソッド式のパラメータを渡す方法 - JSF 2.0

JSF 2.0以来、 " #\ {bean.method(param)} "のようなメソッド式でパラメータ値を渡すことができますが、この機能はTomcatサーバー上で " EL解析エラー "を引き起こします。例えば、

マネージドBean

@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

    public String editAction(String id) {
       //...
    }
}

JSFページ

…​.//…​ <h:commandLink value="Edit" action="#{order.editAction(123)}"/>//…​

Tomcatにデプロイすると、次のエラーメッセージが表示されます。

An Error Occurred: Error Parsing: #{order.editAction(123)}

または

javax.el.MethodNotFoundException

=== 解決策

実際には、このように "** メソッド式のパラメータ** "を呼び出すことは `EL 2.2`の機能であり、デフォルトでTomcatでは** サポートされていません。

この機能を使用するには、http://download.java.net/maven/2/org/glassfish/web/el-impl/2.2/elから "**  el-impl-2.2.jar ** "を取得する必要があります。 -impl-2.2.pom[Java.net]を開き、プロジェクトの依存フォルダに置きます。

__File:pom.xml__
<dependency>
 <groupId>org.glassfish.web</groupId>
 <artifactId>el-impl</artifactId>
 <version>2.2</version>
</dependency>
完了すると、TomcatはJSF 2.0 Webアプリケーションのメソッド表現パラメータ** をサポートできるはずです。

link://tag/jsf2/[jsf2]link://tag/parameter/[parameter]