2013-08-27 79 views
2

我正在Eclipse 4.3上開發一個帶有PrimeFaces 3.5的JSF Web應用程序。沒有編譯時或運行時錯誤,並且應用程序成功部署。但是,我無法在瀏覽器中獲得所需的輸出。 PrimeFaces組件不會顯示,而標準JSF組件則會顯示。PrimeFaces組件不會在瀏覽器中呈現,儘管存在依賴關係

我不確定我是否配置了一切正確。該PrimeFaces JAR至少裏面/WEB-INF/lib

enter image description here

而作爲xmlns:p="http:\\primefaces.org\ui"

enter image description here

我映射FacesServlet*.xhtml的PrimeFaces XML命名空間聲明:

enter image description here

下面是login.xhtml完整的源代碼:

<!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" 
    xmlns:p=" http://primefaces.org/ui" > 
     <h:body> 
<h:head ><title>Login Page !!</title></h:head> 
<h:form> 
<p:panel id="panel" header="Login Panel" style="margin-bottom:10px;"> 

    <h:panelGrid columns="3"> 
     <h:outputLabel value="User Id:" /> 
     <p:inputText id="id" value="loginBean.id" required="true" requiredMessage="ID required"/> 
     <p:message for="id" /> 

     <p:outputLabel value="User Name:" /> 
     <p:inputText id="name" value="loginBean.name" required="true" requiredMessage="Name required" /> 
     <p:message for="name" /> 
    </h:panelGrid> 
</p:panel> 
<p:commandButton type="Submit" value="Submit" action="#" style="margin-right:20px;" /> 

`

輸出看起來是這樣的:

enter image description here

正如你看到的,<h:outputText>做其工作,但沒有<p:xxx>顯示向上。這是如何造成的,我該如何解決這個問題?

+0

不,它不是呈現一個空白頁。如您所見,該頁面部分呈現。我的猜測是拋出異常,服務器日誌說什麼?此外,編輯您的問題,並用實際代碼替換代碼截圖。 – Magnilex

+0

不發佈圖像的代碼..... –

回答

5

至於不被渲染,按照截圖,你有PrimeFaces領先的空白您PrimeFaces組件的具體問題的原因的taglib URI:

xmlns:p=" http://primefaces.org/ui" 

這是顯著,因而是錯誤的。擺脫它:

xmlns:p="http://primefaces.org/ui" 

這樣PrimeFaces組件必須解析並出現在HTML輸出中。

對於其餘的我強烈建議您先通過一個理智的JSF2教程。你正在做一些體面的Hello World示例已經涵蓋的幾個概念錯誤。從our JSF wiki page開始。但是,這些錯誤會造成而不是有這個「空白頁面」。它們會導致不同的問題(例如,CSS/JS無法正常工作,表單提交不起作用)。如果你仍然擔心,你應該基本上問一個新的問題。

+0

雅http://stackoverflow.com/tags/jsf/info啓動教程非常好閱讀,而這正是我正在尋找.. – kark

0


當過你指的是從JSF組件Managed Bean的屬性,使用正確的語法JSF EL語句。

#{bean_name.property} 

在您的代碼中,您忘記提供#{}
例如在線路#15login.xhtml使用:

<h:inputText id="id" value="#{loginBean.id}" required="true" requiredMessage="ID required"/> 

2.
你保持<h:head><h:body>。這不是一個好習慣。
保持<h:head>偏旁<h:body>
實際結構將是:

在ManagedBean LoginBean.java
<!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:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <h:head> 
     <title></title> 
    <h:head> 

    <h:body> 
     <!-- Your Code --> 
    </h:body> 
</html> 


你可能會得到異常。
請張貼代碼而不是截圖。

+0

豆配置是正確的,哪個工作得很好..看到接受的答案..silly錯誤,我做了... – kark

7

這不是直接回答這個問題,但它與它有關。我想分享我的經驗與問題「PrimeFaces標籤不呈現」。我開發上WildFly JSF 2.2應用程序,這是我的index.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

<h:body> 
    <h:form> 
     <p:editor value="#{mDb.newMessage.content}"></p:editor> 
    </h:form> 
</h:body> 
</html> 

當一個應用程序正在運行,編輯器不會出現,這是很奇怪的我,因爲PrimeFaces配置正確在項目中。

我意外地發現了問題的原因。 index.xhtml中沒有h:head標記。當我把頭標籤,PrimeFaces組件呈現成功!

我希望這可以幫助某人。

-3
如果你建立你的proeject MIT行家記住包括primefaces的依賴

lib放到pom.xml的

問候