Вопросы и советы JSF
Я делаю проект JSF2. Я использую mojarra 2.x, PrimeFaces 2. 2RC2, Tomcat 6.x и Google Guice.
-
На данный момент я использую commandlink для навигации по моему сайту, поэтому каждый раз, когда я хочу перезагрузить, навигатор запрашивает значение resubmit. Я вижу в сети, что его можно перенаправить. Лучше ли использовать outputlink или commandlink для навигации?
-
Много раз я использую действие с таким параметром:
<:commandlink action="#{bean.doSomething(item)}" />
Это хорошо или плохо ?
-
Есть ли в JSF какие-то соглашения для именования действий, свойств? Или каков ваш съезд?
-
Когда я пишу страницу xhtml, лучше ли использовать только компоненты или только в случае необходимости ?
Пример
#{bean.foo}
Или
<h:outputText value="#{bean.foo}" />
-
Как насчет использования тегов JSTL, таких как
<c:if>
? Я использую некоторые, потому что у меня были некоторые проблемы, когда я использую<ui:fragment rendered="">
во время восстановления вида.
1 ответ:
<h:commandLink>
запускает запрос POST. Это не имеет смысла для межстраничной навигации. Это не дружественный к пользователю или SEO дружественный. Просто используйте<h:outputLink>
,<h:link>
или даже<a>
, который запускает простой запрос HTTP GET.Если
item
уже присутствует в экземпляре позади#{bean}
, то в этом нет необходимости. Если нет, то все в полном порядке. Вам только нужно иметь в виду, что ваш код таким образом больше не обратно совместим на контейнерах сервлета 2.5, в то время как сам JSF 2.0 обратная совместимость на сервлете 2.5. Это именно функция сервлета 3.0 / EL 2.2 (я только удивляюсь, как вы заставляете его работать на Tomcat 6. Разве вы не используете в Tomcat 7 или вы используете от JBoss Эль?).Мне было бы все равно, например.
ProductManager
,ProductController
,Products
, и т. д., Пока это как можно больше самодокументируется со стороны зрения. То есть не#{pc.submit}
или#{pd.column1}
, а#{products.find}
и#{product.name}
.В Facelets оба одинаково действительны. Оба являются XML-экранированными. У
<h:outputText>
Есть только преимущество в том, что он позволяет легко получить доступ с помощьюUIViewRoot
и добавления атрибутов, таких какstyleClass
,id
,rendered
, и т.д.Пока вы используете его только тогда, когда хотите управлять тем, как создается представление, а не тем, как оно визуализируется, это совершенно нормально. Обратите внимание, что эти теги
http://java.sun.com/jstl/core
предоставляются самими Facelets, а не хорошими JSP JSTL JAR (который имеет/jsp
в TAGLIB URI).Связанные