2011-01-19 111 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等。