我正在做一个简单的注销,并希望确保我正确引用登录根.
<h:form>
<h:commandLink value="Logout" action="#{request.contextPath}/#{userController.logout()}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
/topnav.xhtml @16,104 action="#{request.contextPath}/#{userController.logout()}" Not a Valid Method Expression: #{request.contextPath}/#{userController.logout()}
Run Code Online (Sandbox Code Playgroud)
UPDATE
现在我正在从登出链接添加导航规则到登录页面,因为登出链接在所有页面上,我需要添加规则以允许转换回登录页面.这似乎是一个简单的项目的很多配置.我希望只是让被调用的方法指示登录页面是最终目的地并且热门必须将导航条目从所有页面放入登录页面.
从commandLink的文档:
Name Required Request-time Type
==============================================================
action false false javax.el.MethodExpression
Run Code Online (Sandbox Code Playgroud)
#{request.contextPath}/#{userController.logout()}无法将复合表达式解析为MethodExpression.
在JSF 2.1规范 MethodExpressions的说:
方法表达式与值表达式非常相似,但是方法表达式不支持动态检索和设置属性,而是支持任意对象的任意公共方法的调用(即执行),传递指定的参数集,并返回被调用方法的结果(如果有的话).