0

我正在做一个简单的注销,并想确保我正确地引用了登录根。

<h:form>
  <h:commandLink value="Logout" action="#{request.contextPath}/#{userController.logout()}" />
</h:form>

但我收到此错误:

/topnav.xhtml @16,104 action="#{request.contextPath}/#{userController.logout()}" Not a Valid Method Expression: #{request.contextPath}/#{userController.logout()}

更新

现在我正在从注销链接添加导航规则到登录页面,由于注销链接在所有页面上,我需要添加规则以允许转换回登录页面。对于一个简单的项目,这似乎是很多配置。宁愿只调用方法指示登录页面的最终目的地和热点必须放置一个从所有页面到登录页面的导航条目。

4

2 回答 2

5

commandLink的文档:

Name      Required  Request-time    Type
==============================================================
action    false     false           javax.el.MethodExpression 

复合表达式#{request.contextPath}/#{userController.logout()}无法解析为MethodExpression

JSF 2.1 规范提到 MethodExpressions :

方法表达式与值表达式非常相似,但不支持动态检索和设置属性,方法表达式支持调用(即执行)任意对象的任意公共方法,传递指定的一组参数,并返回被调用方法的结果(如果有)。

于 2012-06-20T08:36:37.953 回答
1

尝试

<h:form>
  <h:commandLink value="Logout" action="#{userController.logout()}" />
</h:form>

除了您不需要上下文之外,您不能#以使用它的方式两次使用它。

于 2012-06-20T01:52:16.870 回答