2012-04-05 4 views
0

Я пытаюсь включить в свой веб-проект JSF 2.0.JSF 2.0 и интерфейсы с лицевыми элементами

Я недавно обновил информацию от facelets 1.x до 2.0 и добавил в свою библиотеку папку primefaces. Все прекрасно, за исключением того, что у меня есть структурированные шаблоны, которые конфликтуют с первичными.

мой template.xhtml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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"> 

<h:head> 
    <title><ui:insert name="title">MILO</ui:insert></title> 

    //Css 
    //js   

</h:head> 

<h:body class="milo"> 
    <h:form styleClass="miloForm" enctype="multipart/form-data"> 
     <div id="container"> 
       <ui:insert name="header"> 
        <ui:include src="/WEB-INF/templates/header.xhtml"/> 
       </ui:insert> 

       <ui:insert name="content"> 
        <!-- include your content file or uncomment the include below and create content.xhtml in this directory --> 
       </ui:insert> 

       <ui:insert name="footer"> 
       <ui:include src="/WEB-INF/templates/footer.xhtml"/> 
       </ui:insert>   </div> 
    </h:form> 
</h:body> 

И мой index.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: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"> 

<ui:composition template="/WEB-INF/templates/base.xhtml"> 

<ui:define name="content"> 

     <p:editor/>   
</ui:define> 

Как только у меня это, редактор p: не появится. любые идеи почему? консоль не покажет мне никаких предупреждений/ошибок.

EDIT >>> Найдено JS ошибки

enter image description here

ответ

4

В вашем template.xhtml, вам нужно заменить <head> по <h:head> и <body> по <h:body>. Вы не должны добавлять другие, что приведет к недействительному HTML.

В частности, <h:head> является обязательным, поскольку он позволяет библиотекам компонентов, таким как PrimeFaces, автоматически включать необходимые файлы CSS/JS путем инъекции зависимости ресурсов. <h:body> является обязательным только в том случае, если у вас есть <h:outputScript> элементов с target="body", так что они будут автоматически перемещены до самой нижней части сгенерированного элемента HTML <body>.


Update ваша конкретная проблема вызвана конфликтом в вручную загруженной библиотеки JQuery и один, который автоматически включен PrimeFaces. PrimeFaces использует jQuery и jQuery UI под обложками. Если вы придерживаетесь использования PrimeFaces, я бы рекомендовал отказаться от загруженного вручную jQuery и вместо этого использовать пакет PrimeFaces. Для того, чтобы покрыть страницы, где вы не используете PrimeFaces компоненты, а также, вы можете явно загрузить PrimeFaces комплектации JQuery для каждой страницы, добавив следующую строку в <h:head>:

<h:outputScript library="primefaces" name="jquery/jquery.js" /> 
+0

Я обновил мой вопрос, чтобы отразить мои выводы. изменение < head> на < h:head> и < body> на < h: body> не происходит, ошибка, которую я получаю, ушла, но редактор p: больше не будет отображаться. почему вы так думаете? – Myy

+0

Не уверен, так как ваш код содержит слишком много шума (вы должны научиться создавать и предоставлять SSCCE), но ваш мастер-шаблон уже имеет «», и все же вы поместили еще один в клиентский шаблон вокруг '' , Вложенные формы недействительны в HTML. – BalusC

+0

Прошу прощения. :(Я посмотрю, смогу ли я обрезать все ненужные части. Я понимаю вашу точку зрения. – Myy