使用Facelets模板导航无法正常工作

gla*_*ill 5 navigation jsf facelets

使用Facelets时遇到导航问题.

我有我的主模板/WEB-INF:

<h:body>
    <div id="container">
        <div id="header">
            <ui:insert name="header">Header</ui:insert>
        </div>

        <div id="navigation">

            <a href="ram.xhtml">RAM</a>
            <a href="mobo.xhtml">Motherboard</a>
            <a href="video.xhtml">Video Card</a>
        </div>

        <div id="content">
            <ui:insert name ="content"></ui:insert>
        </div>

    </div>
</h:body> 
Run Code Online (Sandbox Code Playgroud)

然后是2个看起来完全相同的模板客户端,index.xhtml并且ram.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./WEB-INF/layoutTemplate.xhtml">

    <ui:define name="header">
       some text
    </ui:define>

    <ui:define name="content"> 
        some content
    </ui:define>


</ui:composition>
Run Code Online (Sandbox Code Playgroud)

如果将这些页面中的任何一个设置为欢迎页面web.xml,则可以使用CSS和所有内容正确呈现它们.但是,如果我尝试使用我得到的链接从一个页面导航到另一个页面

此XML文件似乎没有与之关联的任何样式信息.文档树如下所示.

任何提示将不胜感激.

Bal*_*usC 6

这意味着,请求URL(如显示在浏览器地址栏中)没有的URL模式匹配FacesServlet如在definied web.xml.

那些链接

<a href="ram.xhtml">RAM</a>
<a href="mobo.xhtml">Motherboard</a>
<a href="video.xhtml">Video Card</a>
Run Code Online (Sandbox Code Playgroud)

期望FacesServlet映射到*.xhtml.但是如果它被映射到例如*.jsf并且*.xhtml由于某种原因将其更改为不是一个选项(我强烈推荐它),那么你需要修复链接

<a href="ram.jsf">RAM</a>
<a href="mobo.jsf">Motherboard</a>
<a href="video.jsf">Video Card</a>
Run Code Online (Sandbox Code Playgroud)

或者,更好,只需使用<h:link>.它会隐式附加正确的上下文路径和FacesServlet映射:

<h:link value="RAM" outcome="ram" />
<h:link value="Motherboard" outcome="mobo" />
<h:link value="Video Card" outcome="video" />
Run Code Online (Sandbox Code Playgroud)

也可以看看: