嗨我在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>
有没有人遇到过类似的问题?
答案 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
删除导航规则。