我遵循了Trinidad的导航开发指南中的第一个例子,但结果链接总是以"#"显示。我仔细检查了他们的可下载示例,但没有看到任何区别。
Main.xhtml
<tr:page>
<f:facet name="menuSwitch">
<tr:navigationPane hint="button">
<tr:commandNavigationItem text="Home" action="nav_main" />
<tr:commandNavigationItem text="About" />
<tr:commandNavigationItem text="Login" action="nav_login" rendered="#{!loginBean.loginStatus}" />
<tr:commandNavigationItem text="Logut"
rendered="#{loginBean.loginStatus}" />
</tr:navigationPane>
...snip
</tr:page>
face-config.xml
<navigation-rule>
<navigation-case>
<from-outcome>nav_main</from-outcome>
<to-view-id>/main.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>nav_login</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
main.xhtml和login.xhtml都位于WebContent中,而不是隐藏在另一个文件夹中。
我读了这个链接:http://myfaces.apache.org/trinidad/devguide/navigation.html
好吧,新手错了。我没有阅读整个Trinidad示例代码,并且遗漏了一个Form标签来包围整个代码。
<tr:page>
<f:facet name="menuSwitch">
<tr:form>
<tr:navigationPane hint="button">
<tr:commandNavigationItem text="Home" action="navMain" />
<tr:commandNavigationItem text="About" />
<tr:commandNavigationItem text="Login" action="navLogin" rendered="#{!loginBean.loginStatus}" />
<tr:commandNavigationItem text="Logut"
rendered="#{loginBean.loginStatus}" />
</tr:navigationPane>
</tr:form>
</f:facet>
...snip
</tr:page>