Условное отображение не JSF-компонентов (простой ванильный HTML и текст шаблона)

Я пытаюсь условно сделать <tr> поэтому я не могу использовать <h:panelGroup> как он будет оказывать <span> or <div>

Мой текущий (рабочий) подход заключается в следующем:

<h:outputFormat rendered="#{negotiator.maySend}">
    <tr> my tr stuff </tr>
</h:outputFormat>

Это работает, но я не уверен, что это способ злоупотреблять <h:outputFormat> - до этого я пользовался <h:outputLabel> но это было оказано <label> в IE.

Я также прочитал ответы на этот вопрос, но, как упоминалось выше, они не будут работать для меня из-за <tr>: Как не рендерить весь блок в JSF?

1 ответ

Решение

Я не могу использовать <h:panelGroup> как он будет оказывать<span>или же<div>

Видимо, вы не проверяли это тщательно. <h:panelGroup>не будет ничего отображать, если вы не укажете атрибуты, которые должны заканчиваться на стороне клиента, например layout,id,styleClass, так далее.

Таким образом, технически это должно прекрасно работать.

<h:panelGroup rendered="#{negotiator.maySend}">
    <tr> my tr stuff </tr>
</h:panelGroup>

Однако лучше для основной цели было бы использовать<ui:fragment>,

<ui:fragment rendered="#{negotiator.maySend}">
    <tr> my tr stuff </tr>
</ui:fragment>

Это, кстати, также возможно с <f:verbatim>, но это не рекомендуется с JSF 2.0, так как он разработан специально для использования в JSP.

Смотрите также:

Другие вопросы по тегам