Вопросы и советы JSF


Я делаю проект JSF2. Я использую mojarra 2.x, PrimeFaces 2. 2RC2, Tomcat 6.x и Google Guice.

  1. На данный момент я использую commandlink для навигации по моему сайту, поэтому каждый раз, когда я хочу перезагрузить, навигатор запрашивает значение resubmit. Я вижу в сети, что его можно перенаправить. Лучше ли использовать outputlink или commandlink для навигации?

  2. Много раз я использую действие с таким параметром:

    <:commandlink action="#{bean.doSomething(item)}" />
    

    Это хорошо или плохо ?

  3. Есть ли в JSF какие-то соглашения для именования действий, свойств? Или каков ваш съезд?

  4. Когда я пишу страницу xhtml, лучше ли использовать только компоненты или только в случае необходимости ?

    Пример

    #{bean.foo}
    

    Или

    <h:outputText value="#{bean.foo}" />
    
  5. Как насчет использования тегов JSTL, таких как <c:if> ? Я использую некоторые, потому что у меня были некоторые проблемы, когда я использую <ui:fragment rendered=""> во время восстановления вида.

1 2

1 ответ:

  1. <h:commandLink> запускает запрос POST. Это не имеет смысла для межстраничной навигации. Это не дружественный к пользователю или SEO дружественный. Просто используйте <h:outputLink>, <h:link> или даже <a>, который запускает простой запрос HTTP GET.

  2. Если item уже присутствует в экземпляре позади #{bean}, то в этом нет необходимости. Если нет, то все в полном порядке. Вам только нужно иметь в виду, что ваш код таким образом больше не обратно совместим на контейнерах сервлета 2.5, в то время как сам JSF 2.0 обратная совместимость на сервлете 2.5. Это именно функция сервлета 3.0 / EL 2.2 (я только удивляюсь, как вы заставляете его работать на Tomcat 6. Разве вы не используете в Tomcat 7 или вы используете от JBoss Эль?).

  3. Мне было бы все равно, например.ProductManager, ProductController, Products, и т. д., Пока это как можно больше самодокументируется со стороны зрения. То есть не #{pc.submit} или #{pd.column1}, а #{products.find} и #{product.name}.

  4. В Facelets оба одинаково действительны. Оба являются XML-экранированными. У <h:outputText> Есть только преимущество в том, что он позволяет легко получить доступ с помощью UIViewRoot и добавления атрибутов, таких как styleClass, id, rendered, и т.д.

  5. Пока вы используете его только тогда, когда хотите управлять тем, как создается представление, а не тем, как оно визуализируется, это совершенно нормально. Обратите внимание, что эти теги http://java.sun.com/jstl/core предоставляются самими Facelets, а не хорошими JSP JSTL JAR (который имеет /jsp в TAGLIB URI).

Связанные