【问题标题】:Double slash in URL with navigation-rules JSF 2.1带有导航规则 JSF 2.1 的 URL 中的双斜杠
【发布时间】:2012-09-20 14:45:52
【问题描述】:

您好,我对 JSF 2.1 中的导航规则有疑问。此配置适用于 JSF 1.2。在项目中使用了一些额外的库:JSF 2.1、RichFaces 4.2、Tomahawk、Spring 3.1、urlrewrite、acegi。

问题是:

我在浏览器 URL 中打开页面:localhost:8080/cat1/cat2,我看到 index.xhtml 页面。我正在填写表格并单击按钮,2 秒后我可以在 page.xhtml 上看到结果,一切正常,但浏览器中的 URL 有双斜杠。有 localhost:8080/cat1/cat2//index.xhtml 而不是 localhost:8080/cat1/cat2/page.xhtml 。

当我尝试单击 page.xhtml 上的某个链接时,由于 URL 中的双斜杠,我看到找不到页面。

在 page.xhtml 上,我再次有按钮计算,它调用相同的方法表单 bean。单击此按钮后响应正常,我的 URL 是 localhost:8080/cat1/cat2/page.xhtml 没有双斜杠。页面上的所有链接都有效。

当我输入 URL:localhost:8080/cat1/cat2/index.xhtml,然后单击按钮时,我可以看到我的 page.xhtml,但 URL 是 localhost:8080/cat1/cat2/ 并且所有链接都在页面工作

我添加了这一行:

<from-action>#{bean.method}</from-action>

但没有帮助

我的 index.html 上的按钮:

<h:commandButton action="#{bean.method}" value="" styleClass="method right" tabindex="8" />

行动:

public String method() {    
    // few instruction
    return "success";
}

规则:

<navigation-rule>
    <from-view-id>/cat1/cat2/*</from-view-id>
    <navigation-case>
        <from-outcome>success</from-outcome>
        <to-view-id>/cat1/cat2/page.xhtml</to-view-id>
    </navigation-case>
    <!-- Here is more cases -->
</navigation-rule>

有没有人遇到过类似的问题?

【问题讨论】:

    标签: jakarta-ee jsf-2 migration


    【解决方案1】:

    // 是因为在欢迎文件中以 / 开头,它应该是 index.xhtml 而不是 /index.xhtml

    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    

    在 JSF 2.0 中,您不必在 faces-config.xml 中显式编写导航规则。您可以只返回结果视图 ID。

    因此,如果您在操作方法中返回“成功”,那么它将自动获取success.xhtml

    所以只需返回“页面”,您就可以从faces-config.xml 中删除导航规则。

    【讨论】:

    • @k.nieszporek 就像附加评论一样,隐式导航(返回结果视图 ID 以让 JSF 将您重定向到该页面)仅适用于位于同一文件夹中的页面。在其他情况下,您将不得不使用良好的旧导航规则。查看 this link 以获得有关 JSF2 中导航如何工作的很好的解释。
    • @Gamb,如果页面位于另一个文件夹中,您可以返回完整路径。即使您发布的链接中写的条件导航也可以在与 if-then-else 相同的操作方法中完成,您也不必为此编写导航规则。
    • @Ravi 我之前评论的编辑是错误的,我想说你作为示例给出的方式仅适用于同一文件夹中的页面。尽管如此,除非您使用某种结构来映射您自己的规则,否则在整个应用程序中拥有跨页面/bean 的绝对路径会使维护变得头疼......这最终是不必要的,因为您可以直接定义导航规则。这是一个问题考虑利弊。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2012-06-19
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多