解决问题(九)——jsf+facelet(一)下马威

 最近在研究facelet,发现它还是一个很好用的模版类工具,就像把它和jsf整合来用。但是没想到我心中对facelet的熊熊烈焰,在我刚走到facelet大门的时候就被扑灭的。刚刚接触,就被facelet来了一个下马威。

其实我的流程也很简单,用myeclipse搭建一个web project,在添加jsf capabilities,用1.5的说明,再把support facelet钩上环境就搭好了。

创建三个文件:index.jsp, welcome.xhtml,main.xhtml(template)

index.jsp中的内容很简单就是一句<jsp:forward page="/welcome.faces"></jsp:forward>

welcome.xhtml的内容也很简单

<ui:composition template="/templates/main.xhtml">
   <ui:define name="title">Welcome</ui:define>
   <ui:define name="content">Content</ui:define>
 </ui:composition>

main.xhtml的内容就是主页面的布局

<div id="container">
   <div id="header">
    <ui:include src="/templates/include/header.xhtml"></ui:include>
   </div>
   <div id="pageBody">
    <div id="leftSideBar">
    </div>
    <div id="content">
     <ui:insert name="content">Content</ui:insert>
    </div>
    <div id="rightSideBar">
    </div>
   </div>
   <div id="footer">
    <ui:include src="/templates/footer.xhtml"></ui:include>
   </div>

header.xhtml,footer.xhtml是用myeclipse创建的文件,放在/templates/include/下面。里面的内容完全没有改动过。所有这些都是很简单的内容,但是一运行就会出现以下错误 

HTTP Status 404 - /jsfproject/welcome.faces


type Status report

message /jsfproject/welcome.faces

description The requested resource (/jsfproject/welcome.faces) is not available.

在网上查了很多资料都说是找不到这个文件,经过两天的研究,看了网上给的例子,和同事做的例子(他做的完全可以运行,除了页面内容以外什么配置都一样),才有点结果,明白了为什么。

是实际上可能你也看出来了,上面代码里面header.xhtml,footer.xhtml放在同一个目录下面,但是两个include的src内容却不一样(这里这么明显是为了举例,当时就算是这么明显也没看到,一直以为是自己的环境配置有问题),这个就是问题,因为其中一个文件连接不对,只要把它该对就不会有错了。

通过对这个问题的研究,收获就是not available 可以代表(1)文件不存在,在环境中找不到(2)文件存在但是里面包含一些信息导致这个文件不可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章