【问题标题】:JSF Navigation Rule to the page itselfJSF 导航规则到页面本身
【发布时间】:2011-07-05 21:31:46
【问题描述】:

如何定义从 #{current.doLogout} 到同一视图 ID 的所有视图 ID 的导航规则?

【问题讨论】:

  • 据我所知,您的标题和描述各不相同。虽然您的标题表明您需要在单击命令按钮后位于同一页面中(这是@Balusc 所描述的),但您的描述说明了我所描述的内容。如果我错了,请纠正我

标签: jsf navigation jsf-2


【解决方案1】:

您需要使用通配符来实现这一点

只需在 action 标签中调用 logout 方法即可。并将其添加到您的 faces-config.xml

<navigation-rule>
 <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>welcome</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

【讨论】:

    【解决方案2】:

    如果你没有在action方法中定义或返回null或void,默认情况下会显示与提交表单相同的页面。

    public void doLogout() {
        // Logout.
    }
    

    这样您就无需在faces-config.xml 中摆弄导航案例。 顺便说一句,您是否已经知道新的 JSF 2.0“隐式导航”功能?

    【讨论】:

    • 您的答案因stackoverflow.com/questions/3909267/… 而异。动作方法的返回类型可以是无效的吗?
    • 如果我没有在 faces-config.xml 中定义规则,由于缺少任何导航规则,commandLink 将被禁用!!!
    • @mvg:是的,可以。我没有说它必须返回String。 @ehsun:那么您的问题的原因在于其他地方。再一次,您是否知道 JSF 2.0 中新的隐式导航规则会使整个导航规则过时?
    • 你的意思是隐式导航,返回页面的名称(facelets)?
    • 事实上,我有一个命令链接,可以从任何页面(facelet)单击它,并将调用会话范围 bean 的方法。之后我希望用户访问同一页面,但他已注销,页面内容可能不同。
    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2015-08-12
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多