现在我在faces-config.xml文件中提供导航规则。如果我想停止在faces-config.xml中创建条目。
如果我不想在faces-config.xml中执行此操作,如何指定导航规则?
“faces-config.xml中”
<?xml version="1.0"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<navigation-rule>
<description>Navigation from the hello page.</description>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/wsListing.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>Navigation from the hello page.</description>
<from-view-id>/wsListing.xhtml</from-view-id>
<navigation-case>
<from-outcome>ebzService</from-outcome>
<to-view-id>/ebzinput.xhtml</to-view-id>
<redirect />
</navigation-case>
<navigation-case>
<from-outcome>filterEbz</from-outcome>
<to-view-id>/filterebzinput.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>Navigation from the hello page.</description>
<from-view-id>/ebzinput.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/ebzoutput.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
</faces-config>
答案 0 :(得分:3)
自JSF 2.0起,仅支持隐式导航。根据XML文件根声明和您的问题历史记录,您使用的是JSF 1.2,这就是故事的结尾。
但是,根据您当前的导航案例,您似乎每次都会重定向。为此,您也可以使用ExternalContext#redirect()
。
public void login() throws IOException {
// ...
FacesContext.getCurrentInstance().getExternalContext().redirect("wsListing.xhtml");
}
或者,如果您实际上根本不需要执行业务操作,只需使用普通链接。
<h:outputLink value="ebzinput.xhtml">go to ebzinput</h:outputLink>
额外的好处是它变成了searchbot-indexable(从而更好的SEO)。
答案 1 :(得分:0)
操作方法可以返回视图ID,而不是“成功”,例如
public String login() { return "wsListing"; }
这样您就可以将导航规则转移到托管bean。 如果要强制执行重定向,请使用
public String login() { return "wsListing?faces-redirect=true"; }