2011-01-19 109 views
0

單擊頁面上的按鈕後,我無法從一個頁面導航到另一個頁面。我已經定義了導航規則。JSF導航問題

<managed-bean> 
<description>helloWorld</description> 
<managed-bean-name>helloWorld</managed-bean-name> 
<managed-bean-class>com.ritz.web.HelloWorld</managed-bean-class> 
<managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 
<navigation-rule> 
<from-view-id>/HelloWorldProg.xhtml</from-view-id> 
<navigation-case> 
    <from-outcome>success</from-outcome> 
    <to-view-id>/welcome.xhtml</to-view-id> 
</navigation-case> 
</navigation-rule> 
<application> 
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
</application> 

的web.xml是

<!-- Welcome page --> 
<welcome-file-list> 
<welcome-file>faces/HelloWorld.xhtml</welcome-file> 
</welcome-file-list> 

<!-- JSF mapping --> 
<servlet> 
<servlet-name>Faces Servlet</servlet-name> 
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 

<!-- Map these files with JSF --> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.faces</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
+0

您可以設置導航。如果您使用的是JSF 1.x,則在faces-config.xml中使用rulez。如果您使用的是JSF 2,只需將路徑放在「action」值中,例如:` – Renan 2011-01-19 10:56:50

回答

1

,首先你需要設置按鈕,點擊後行爲的方法:

public String nextPage() 
{ 
    if (username.equals("guest") && password.equals("guest")) 
    { 
     return "loginSuccess"; 
    } 
    return "loginFailure"; 
} 

你需要做的下一件事是連接您的按鈕動作屬性與方法:

<h:commandButton value="Submit Values" action="#{YourBean.nextPage}"/> 

然後你需要做的是設置一個導航規則:

<navigation-rule> 
    <description></description> 
    <from-view-id>/login.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>loginSuccess</from-outcome> 
     <to-view-id>/loginSuccess.xhtml</to-view-id> 
    </navigation-case> 
<navigation-case> 
     <from-outcome>loginFailure</from-outcome> 
     <to-view-id>/loginFailure.xhtml</to-view-id> 
    </navigation-case>   
</navigation-rule>  
</faces-config> 

還有最後一件事。如果你有這樣的映射:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

你應該把everywehere面孔/ login.xhtml,面臨/ success.xhtml等。