我是JSF的首发,并且无法通过EL调用任意方法
根据我阅读的Java EE 6中包含的统一表达式语言2.1版,支持调用任意方法并将参数传递给它们。
我正在使用MyFaces2.0.3,JRE6Up21,Tomcat 6.0.29和Eclipse
我在facelet中有以下代码段:
<h:form>
<p>
<h:link outcome="NextPage" value="Link for Next Page">
<f:param name="word1" value="hello" />
<f:param name="word2" value="world" />
</h:link>
</p>
</h:form>
并在faceface NextPage.xhtml
中<h:form>
<p>
This is the method invocation #{model.printArgs(param.word1,param.word2)}
</p>
</h:form>
Model
是一个托管bean(请求作用域),它具有此方法printArgs
,返回word1和word2的字符串连接。
@ManagedBean
@SessionScoped
public class Model {
public String printArgs(String word1, String word2) {
String result = "No arguments??????";
if (null != word1 && !word1.isEmpty() && null != word2 && !word2.isEmpty()) {
result = word1+" "+word2;
}
return result;
}
}
当我按下链接时,网址为http://localhost:8080/RegJSF/faces/NextPage.xhtml?word1=hello&word2=world
但我收到了错误
org.apache.el.parser.ParseException: 遇到“”(“”(“”在第1行, 第25栏。期待其中一个:“}” ......“。” ......“[”...“&gt;” ......“gt”...... “&LT;” ...“lt”...“&gt; =”......“ge”...... “&lt; =”......等等。
如果我删除#{model.printArgs(param.word1,param.word2)}
加载了NextPage,那么问题就是方法调用
这里有什么问题?是配置问题吗?
注意如果我使用Mojarra2.0.3,则同样的问题
有人可以帮忙吗?
谢谢!
答案 0 :(得分:3)
根据我阅读的Java EE 6中包含的统一表达式语言2.1版,支持调用任意方法并将参数传递给它们。
我认为你错了。这种支持是在JSP 2.2中引入的(这是满足JEE6规范所必需的)。
来自JSP 2.2 spec:
维护1和维护版本2之间的更改
此版本的主要变化是 添加方法调用 EL中的参数,如
#{trader.buy(“JAVA”)}
。
由于Tomcat 6是JSP 2.1容器,因此您可以考虑升级到Tomcat 7。
答案 1 :(得分:0)
写
This is the method invocation <h:outputText value="#{model.printArgs(param.word1,param.word2)}"/>
这里需要双引号。另外,请尝试使用outputText。