1
真正的工作,我在我的測試中使用JSF 2.0面臨導航不JSF2
這是我在faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is not required if you don't need any extra configuration. -->
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
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_2_0.xsd">
<navigation-rule>
<from-view-id>/pages/test/test.html</from-view-id>
<navigation-case>
<from-outcome>write</from-outcome>
<to-view-id>/pages/test/test-write.html</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
的TestController.java
@ManagedBean(name="testController")
@SessionScoped
public class TestController implements Serializable {
private static final long serialVersionUID = -3244711761400747261L;
public String test() {
return "write?faces-redirect=true";
}
。 xhtml文件
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="content">
<h:form>
<h:commandButton action="#{testController.test()}" value="test" />
</h:form>
</ui:define>
</ui:composition>
這是我的我們b.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 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-app_3_0.xsd"
version="3.0">
<display-name>Bachelor Demo</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
我在想什麼?
喜@BalusC,我都嘗試 - 我改變了它在navigationrule到.xhmtl - 這是行不通的。我也刪除了導航規則並使用''/pages/test/test-write.xhtml?faces-redirect=true''是'faces-config.xml'和'web.xml'嗎? – Joerg 2012-03-21 16:22:12
如果規則不起作用,那麼從視圖ID只是不匹配。您可以通過在action方法中檢查'facesContext.getViewRoot()。getViewId()'來了解它。請注意,我更新了我的答案,並建議刪除'?faces-redirect'。此外,我不確定我是否理解你的最後一個問題。該字符串應該是操作方法的「返回」值。 – BalusC 2012-03-21 16:24:24
哦,這個動作根本不會被調用。您可以通過在操作方法上設置斷點或通過添加sysout/logger行來計算出來。順便說一下,如果action方法不包含除naviation的返回值之外的任何內容,那麼您也可以將'action'屬性中的確切返回值替換。更重要的是,如果它是純粹的頁面到頁面導航,而是使用''而不用重定向。這對SEO更友好。另請參閱http://stackoverflow.com/questions/4317684/when-should-i-use-houtputlink-instead-of-hcommandlink –
BalusC
2012-03-21 16:54:40