【发布时间】:2011-05-31 22:56:06
【问题描述】:
我是 JSF 的初学者,但在通过 EL 调用任意方法时遇到问题。
根据我阅读的内容,Java EE 6 中包含的统一表达式语言 2.1 版支持调用任意方法并将参数传递给它们。
我正在使用 MyFaces2.0.3、JRE6Up21、Tomcat 6.0.29 和 Eclipse。
我在 facelet 中有以下 sn-p:
<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>
在facelet 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" ... "=" ... "ge" ... "
如果我删除 #{model.printArgs(param.word1,param.word2)},则加载 NextPage,所以问题出在方法调用上。
这里有什么问题?是配置问题吗?
注意如果我使用 Mojarra2.0.3 也会出现同样的问题
有人可以帮忙吗?
谢谢!
【问题讨论】:
-
我不确定您要做什么,您是不是要在页面加载时调用方法,是吗?
-
@org.life.java:我点击链接,url正如我提到的,我通过URL传递参数,在NextPage.xhtml中,应该调用传递参数的方法页面将呈现:
"This is the method invocation hello world!"