我正在使用Netbeans 7.0,Glassfish 3.1,JSF 2.0 我试图在逐步用户注册过程中从一个视图导航到另一个视图(有三个步骤)。每个步骤对应一个视图,这些视图位于不同的文件夹中,但都具有相同的名称,即register.xhtml。我尝试过隐式导航,我在托管bean事件监听器中指定视图的绝对路径,并使用faces-config.xml导航案例。
问题是我可以毫无问题地从第一步/视图导航到下一步/视图。导航到第三个视图但会导致com.sun.faces.context.FacesFileNotFoundException
文件结构类似于
/extensions/assm/registration/individual/register.xhtml
/extensions/assm/registration/address/register.xhtml
/extensions/assm/registration/systemuser/register.xhtml
faces-config.xml的摘录,用于从地址导航到systemuser
<navigation-rule>
<from-view-id></from-view-id>
<navigation-case>
<from-outcome>gotosystemuser</from-outcome>
<to-view-id>/extensions/aasm/registration/systemuser/register.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
那里的任何人都知道我在哪里弄错了?
答案 0 :(得分:2)
com.sun.faces.context.FacesFileNotFoundException
表示JSF无法找到该视图。您在view id
中指定的navigation-rule
并不好(不知何故)。
视图由context root
之后的所有内容的路径标识,包括开头的/
。
但您还必须在URL pattern
中加入与Faces Servlet
映射的web.xml
。
例如如果在你的web.xml中,如果你有
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/jsf/*</url-pattern>
然后您还必须将其包含为View ID
。因此,视图ID将是
/jsf/folder1/folder2/page.xhtml
但是使用JSF 2.0,您不需要在faces-config
文件中执行所有导航规则。
在JSF 2.0中导航到另一个页面,您需要做的就是从action方法返回视图ID。
@ManagedBean
@ViewScoped
public class MyBean {
public String axnMethod() {
return "view-id"; //this will result in navigation to view represented by view-id
}