jsf链接到使用模板的视图

时间:2011-11-10 21:59:22

标签: jsf jsf-2 facelets

嗨,这是我的文件夹结构:

-Web Pages
 -WEB-INF
   -template.xhtml
 -gebruiker
   -index.xhtml
 -index.xhtml

现在我正在尝试从index.html链接到gebruiker / index.xhtml

我这样做如下:

的index.xhtml:

<h:form>
    <h:commandButton value="gebruiker" action="#{labelController.gebruiker()}"/> 
</h:form>

豆:

public String gebruiker(){
        return "gebruiker/index";
    }

如果我运行这个,我得到一个没有任何有用细节的IO.FileNotFoundException ......

我知道问题是因为gebruiker文件夹中的index.xhtml使用的模板如下所示:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./WEB-INF/template.xhtml">

    <ui:define name="title">
        Project Label Configurator
    </ui:define>

    <ui:define name="body">
        GEBRUIKER PAGINA
    </ui:define>

</ui:composition>

当我使用普通的xhtml而不是组合标签时,映射有效。

任何人都知道为什么?

我的web.xml:

<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>/faces/*</url-pattern>
    </servlet-mapping>

1 个答案:

答案 0 :(得分:2)

template="./WEB-INF/template.xhtml"

删除那段时间。

template="/WEB-INF/template.xhtml"

否则它正在寻找/gebruiker/WEB-INF/template.xhtml文件。作为第1个字符的句点代表“从当前文件夹开始”,而作为第1个字符的斜杠代表“从根目录开始”。


无关到具体问题,您似乎正在实施页面到页面的导航。我强烈建议只使用GET请求,而不是POST请求。这是更多的SEO和用户友好。

<h:link value="gebruiker" outcome="gebruiker/index" />

另见: