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

在jsf中使用括号和不使用括号回调bean方法之间的区别?,jsf,Jsf,两者的区别是什么 <h:commandLink actionListener="#{serviceProviderBean.method}" value="Save" /> 及 是否都调用相同的方法或上述代码中的任何错误都可以。第二个用于传递参数,如 <h:commandLink actionListener="#{serviceProviderBean.save(someBean.someOption)}" value="Save" /> Se

两者的区别是什么

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



是否都调用相同的方法或上述代码中的任何错误都可以。第二个用于传递参数,如

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


Second在tomcat6下不起作用,它将与tomcat7/jSF2一起起作用

我认为,当您想要使用返回布尔值的方法,但在bean中没有定义匹配属性时,您还必须将方法与大括号一起使用

我今天遇到了这种情况。 我的xhtml页面有一个
,带有
rendered=“#{bean.isLoggedIn}”
属性。
isLoggedIn
方法调用边界的方法,因此bean没有匹配的属性
private boolean isLoggedIn
。 我因丢失财产而被破例。 将大括号添加到渲染属性后,使其成为
rendered=“#{bean.isLoggedIn()}”
它工作正常


无论如何。这个方法现在已经被删除了,因为我的bean不应该做业务逻辑的东西:D

如果两者都有效的话…:)我认为它与使用的EL解析器版本有关。早期版本不支持使用大括号调用方法,会尝试将“方法”解析为get或set方法。如果我没记错的话,你也可以在大括号中添加参数(例如表中的当前对象)。如何知道EL解析器的版本?它是应用服务器/servlet容器/tomcat/thing的一部分。对于tomcat,这里列出了EL规范版本:-可以重新配置EL解析器。JBoss EL在大括号正式进入EL规范之前就已经相当有名了。这里有输入错误和/或误解。Maching属性将是
私有布尔loggedIn
,而不是
isLoggedIn
。然而,你的观点是错误的。它只涉及EL解析器版本。例如,我可以自由使用
#{bean.searchPerson}
,而这些不是属性。它是一个没有任何参数的方法。
<h:commandLink actionListener="#{serviceProviderBean.save(someBean.someOption)}" 
   value="Save" />