JSF / Facelets: почему не стоит смешивать JSF / Facelets с тегами HTML? - PullRequest
13 голосов
/ 29 марта 2011

Я уже несколько раз читал это: некоторые разработчики не поддерживают чередование тегов JSF / Facelets с тегами HTML в своих файлах XHTML.Очевидно, что HTML-теги не будут частью дерева компонентов пользовательского интерфейса, но в чем их недостаток?

Я часто нахожу примеры кода, в которых авторы делают такое смешивание:

http://www.ibm.com/developerworks/java/library/j-facelets/

http://www.packtpub.com/article/facelets-components-in-jsf-1.2

http://oreilly.com/catalog/9780596529246

«Шов в действии» также чередует JSF / Facelets и HTML-теги.

Я в замешательствечто на самом деле использовать.Я начал смешивать теги, но начинаю верить, что это был, вероятно, неправильный выбор.Однако я не понимаю, почему пуристический подход предпочтительнее.

Я точно знаю, что у меня есть таблица, в которой данные в формате JSF не дают мне достаточной гибкости для отображения того, что мне нужно, поэтому я делаю это пуристически.не возможно.

Кроме того, мне интересно, почему ни один из приведенных выше примеров не использует f: view и т. д. вместо жестко закодированных тегов html, head, body и т. д.

Может кто-нибудь, пожалуйстаочистить это для меня?

Ответы [ 2 ]

17 голосов
/ 06 сентября 2011

В эпоху JSF 1.0 / 1.1 это действительно было "не очень хорошей идеей", потому что весь HTML не был автоматически взят в дереве компонентов JSF при использовании JSP в качестве технологии просмотра.Весь простой HTML был с нетерпением представлен JSP до дерева компонентов JSF.Например,

<p>Lorem ipsum <h:outputText value="#{bean.value1}"> dolor sit amet<p>
<p>Consectetur adipiscing <h:inputText value="#{bean.value2}" /> elit</p>

получено как

<p>Lorem ipsum dolor sit amet<p>
<p>Consectetur adipiscing elit</p>

value1
<input type="text" value="value2" />

. Чтобы исправить это, вам понадобится ввести <f:verbatim>.

<f:verbatim><p>Lorem ipsum </f:verbatim><h:outputText value="#{bean.value1}"><f:verbatim> dolor sit amet<p></f:verbatim>
<f:verbatim><p>Consectetur adipiscing </f:verbatim><h:inputText value="#{bean.value2}" /><f:verbatim> elit</p></f:verbatim>

Это была настоящая боль при обслуживании,Это было одной из главных причин, почему JSF 1.0 / 1.1 так ненавидели.

Начиная с JSF 1.2, с новым обработчиком представления, <f:verbatim> больше не был необходим.Разработчики теперь могут вздохнуть с облегчением.Более того, новый обработчик представления позволил JSF использовать технологию представления, отличную от JSP, и таким образом родились Facelets.

См. Также:

4 голосов
/ 06 сентября 2011

Как правило, я использую смешанные теги HTML и Facelets на страницах макета / шаблона. Но для реальных страниц содержимого я стараюсь использовать только те теги JSF, которые доступны в моей библиотеке JSF (JSF + RichFaces).

Таким образом, я могу лучше контролировать, какие элементы отображать и скрывать, а также содержимое каждого элемента, но я все еще могу жестко закодировать мой макет главной страницы в файле шаблона лицевых фигур.

...