2011-03-20 116 views
0

在我的index.xhtml上,我有正確顯示並使用託管bean的Java Server Face組件。但是,如果我鏈接到任何其他頁面或者甚至是具有相同EXACT代碼的頁面,那些頁面將不會顯示這些組件,而只顯示文本。Glassfish不顯示JSF組件

假設的index.xhtml是這樣,並正確顯示:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <h:form> 
      <h:inputText value="#{user.name}"/> 
      <h:commandButton action="#{user.submit}" value="Submit" /> 
     </h:form> 
    </h:body> 
</html> 

如果我添加一個鏈接到任何其他頁面(即使使用相同的代碼)JSF組件不顯示它們。這是因爲其他頁面可能無法「看到」託管bean?或者是其他東西?

感謝您的幫助。

+0

請問你的鏈接是什麼樣子? – 2011-03-20 10:45:27

+0

這是一個標準: FBryant87 2011-03-20 10:50:50

回答

3

它看起來像你想調用的頁面不會被Faces Servlet處理。

在您的應用程序的web.xml中,您定義了將由此servlet處理的服務器請求的url模式。默認情況下,這通常是/faces/*。這意味着你調用的鏈接必須包含這個模式才能被Faces Servlet處理。

如果創建的Netbeans項目,映射通常如下所示:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

因此,嘗試使用含有此網址模式或使用相對鏈接,而不是鏈接。

如果使用h:link,而不是a:href,URL模式自動前置:

<h:link value="My other page" outcome="otherpage" /> 

將呈現爲:

<a href="/yourAppName/faces/otherpage.xhtml">My other page</a>