在jsf中使用括号和不带括号的回调bean方法之间的区别?

时间:2014-11-25 07:46:35

标签: jsf

之间有什么区别
  <h:commandLink actionListener="#{serviceProviderBean.method}" value="Save" />

 <h:commandLink actionListener="#{serviceProviderBean.method()}" value="Save" />

既调用上述代码中的相同方法或任何错误

3 个答案:

答案 0 :(得分:0)

两者都很好。第二个用于传递像

这样的参数
<h:commandLink actionListener="#{serviceProviderBean.save(someBean.someOption)}" 
   value="Save" />

答案 1 :(得分:0)

第二个在tomcat6下不起作用,它将与tomcat7 / jSF2一起使用

答案 2 :(得分:0)

我想你还必须使用方法大括号,当你想使用一个返回布尔值的方法,但不要在bean中定义匹配的属性。 / p>

我今天有这种情况。 我的xhtml页面有一个<h:panelGroup ...>,其rendered="#{bean.isLoggedIn}"属性。 isLoggedIn方法调用边界的方法,因此bean没有匹配的属性private boolean isLoggedIn。 由于缺少属性我得到了一个例外。 将大括号添加到呈现的属性后,使其rendered="#{bean.isLoggedIn()}"正常工作。

反正。这个方法现在被删除了,因为我的bean不应该做业务逻辑:D