【问题标题】:JSF 2.0 implicit navigation, different viewsJSF 2.0 隐式导航,不同的视图
【发布时间】:2011-07-29 13:39:09
【问题描述】:

我正在寻找对 JSF 2.0 隐式导航以及它如何与视图一起使用的良好解释。更准确地说,我知道从动作方法中我可以返回一个作为动作结果的字符串。如果有一个文件名与结果匹配的 JSF 视图,那么这就是隐式导航。

现在...我的问题是,如果从文件夹内的视图调用操作但我要导航到的下一个视图位于不同的文件夹中怎么办?即,从/manager/edit.xhtml 调用一个动作。该操作应返回什么字符串,以便导航可以安全地转到/user/list.xhtml/index.xhtml/manager/index.xhtml

【问题讨论】:

    标签: view navigation jsf-2


    【解决方案1】:

    据我所知,JSF 仅在当前上下文中寻找匹配的视图。您可能必须在 faces-config.xml 中定义导航规则,以便以特殊方式处理结果。这是一个例子:

    <navigation-rule>
            <from-view-id>/profiles/viewkeypages.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>editkeypage</from-outcome>
                <to-view-id>/users/editkeypage.xhtml</to-view-id>
                <redirect />
            </navigation-case>      
    </navigation-rule>
    

    -普拉文。

    【讨论】:

    • 你好普拉文。对,这就是我目前正在做的事情,我只是想验证这一点。我的意思是,只是我读过的参考资料和遇到的博客都提到了隐式导航的好处,但他们没有说它不能代替导航规则,特别是因为隐式导航导航仅适用于当前上下文中的视图。即使在有几个视图的小型 Web 应用程序中,我们也应该将它们组织到目录中,从而创建上下文。 我想确认导航到不同的上下文需要使用导航规则。
    【解决方案2】:

    您可以使用隐式导航来访问其他文件夹中的视图。

    在视图中做这样的事情:

    <h:link value="Move" outcome="#{request.contextPath}/users/editkeypage.xhtml?faces-redirect=true" />
    

    <h:link value="Move" outcome="/users/editkeypage.xhtml?faces-redirect=true" />
    

    【讨论】:

    • faces-redirect=true 在普通的 GET 链接上有何用处?
    • 嗯,这部分可能不需要,但您可以从 1 个文件夹中的视图转到另一个文件夹中的视图,这就是我所得到的。我只是复制并粘贴了一个我拥有的示例,却忘记删除该部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2011-11-26
    • 1970-01-01
    • 2012-08-07
    • 2011-04-03
    • 2012-08-24
    相关资源
    最近更新 更多