2013-08-27 2 views
2

Я разрабатываю веб-приложение JSF с помощью PrimeFaces 3.5 на Eclipse 4.3. Ошибок компиляции или времени выполнения нет, и приложение успешно развертывается. Однако я не могу получить желаемый результат в браузере. Компоненты PrimeFaces не отображаются, а стандартные компоненты JSF.Компоненты PrimeFaces не отображаются в браузере, несмотря на наличие присутствия

Я не уверен, правильно ли я настроил все правильно. PrimeFaces JAR, по крайней мере внутри /WEB-INF/lib:

enter image description here

И XML пространство имен PrimeFaces объявлен xmlns:p="http:\\primefaces.org\ui"

enter image description here

И я нанес на карту FacesServlet на *.xhtml:

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

Ya the http://stackoverflow.com/tags/jsf/info startup tutorial очень приятно читать, и именно этого я и искал. – kark

0

1.
Когда когда-либо вы имеете в виду управляемых свойств компонента из компонентов JSF, использовать правильный синтаксис для операторов JSF EL.

#{bean_name.property} 

В вашем коде вы забыли указать #{}.
Например, на линии # 15 в login.xhtml Использование:

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

2.
Вы держите <h:head> внутри <h:body>. Это не очень хорошая практика.
Держать <h:head> вне стороны <h:body>.
Фактическая структура будет:

<!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> 

3.
Вы можете получать исключение в ManagedBean LoginBean.java класса.
Пожалуйста, разместите код вместо скриншотов.

+0

Конфигурация bean-конфигурации правильная и которая работает очень хорошо .. так что принятый ответ ... ошибка, которую я сделал ... – kark

7

Это не ответ на этот вопрос напрямую, но это связано с ним. Я хочу поделиться своим опытом с проблемой «Теги PrimeFaces not rendering». Я занимаюсь разработкой JSF 2.2 приложения на WildFly, а вот мой 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 мит Maven не забудьте включить в зависимость primefaces импровизировать в pom.xml

приветы

Смежные вопросы