解決問題(九)——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)文件存在但是裏面包含一些信息導致這個文件不可用。

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