从JSF 2.0开始,允许在方法表达式中传递参数值,例如“ #{bean.method(param)} ”,但是此功能将在Tomcat服务器上引发“ EL解析错误 ”。 例如,
托管豆
@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不支持该功能。
为了使用此功能,您必须从Java.net获取“ el-impl-2.2.jar ”,并将其放入项目依赖项文件夹中。
档案:pom.xml
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
完成后,Tomcat应该能够在JSF 2.0 Web应用程序中支持方法表达式参数 。
翻译自: https://mkyong.com/jsf2/how-to-pass-parameters-in-method-expression-jsf-2-0/