Условное отображение не 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.
Смотрите также:
- Альтернатива пользовательскому интерфейсу: фрагмент в JSF
- Условное отображение компонентов JSF
- Как узнать идентификатор клиента компонента для обновления / рендеринга ajax? Не удается найти компонент с выражением "foo", на которое ссылается "bar"
- Обновление / рендеринг Ajax не работает на компоненте с атрибутом рендеринга