JSF 2.0导航无法正常工作

时间:2011-09-27 14:07:01

标签: jsf navigation

我正在使用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>

那里的任何人都知道我在哪里弄错了?

1 个答案:

答案 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
    }