Доступ к атрибуту name

#jsf #facelets

#jsf #лицевые панели

Вопрос:

У меня есть шаблон JSF с заголовком и подзаголовком :

 <h3><ui:insert name="title"/></h3>
<hr/>
<h5><ui:insert name="subtitle"/></h5>
  

Все страницы, использующие этот шаблон, имеют заголовок, но не всегда подзаголовок :

 <ui:define name="title">My Title with no subtitle</ui:define>
  

Когда нет субтитров, я не хочу иметь <hr/> тег. Итак, что я действительно хочу сделать, это проверить, является ли subtitle пустым, если да, игнорируйте блок кода. Что-то вроде этого :

 <h3><ui:insert name="title"/></h3>
<c:if test="#{not empty subtitle}">
    <hr/>
    <h5><ui:insert name="subtitle"/></h5>
<c:if>
  

Но, конечно, <c:if test="#{not empty subtitle}"> это не работает. Я не знаю, как получить доступ к значению subtitle переменной.

Есть идеи?

Спасибо

Ответ №1:

Самое близкое, что вы можете получить, это вместо этого определить субтитр как <ui:param> .

Таким образом,

 <ui:define name="title">My Title with a subtitle</ui:define>
<ui:param name="subtitle" value="A subtitle" />
  

с помощью

 <h3><ui:insert name="title"/></h3>
<ui:fragment rendered="#{not empty subtitle}">
    <hr/>
    <h5>#{subtitle}</h5>
</ui:fragment>