使用导航规则JSF 2.1在URL中双斜杠

时间:2012-09-28 17:31:27

标签: java-ee jsf-2 migration

嗨我在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>

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

1 个答案:

答案 0 :(得分:4)

// 是因为您的欢迎文件中的 / 起始,它应该是index.xhtml而不是{{} {1}}。

/index.xhtml

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

因此,如果您在操作方法中返回“成功”,则会自动获取<welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list>

因此,只需返回“页面”,即可从success.xhtml删除导航规则。