Условное отображение блока HTML на основе наличия ключа пакета ресурсов

Я использую JSF, и мне нужно загрузить пакет под названием Extra.

<f:loadBundle basename="com.ni.lib.extra.delivery.ExtraBundle" var="extra" />

Внутри этой дополнительной переменной есть значение, называемое downtime_notice. Теперь, если это значение НЕ пусто, я должен показать сегмент css с текстом, содержащимся в значении downtime_notice. Что-то вроде этого (конечно, это не работает):

if(extra.donwtime_notice!=''){
            <div class="pnx-msg pnx-msg-warning clearfix">
                <i class="pnx-msg-icon pnx-icon-msg-warning"/>
                <span class="pnx-msg-content"><h:outputText value="#{extra.downtime_notice}" escape="false"/></span>
            </div>
            </br>
}

Я могу использовать javascript, на всякий случай. Любые идеи? Спасибо!


person Nacho321    schedule 17.01.2013    source источник


Ответы (1)


Вы можете использовать <ui:fragment> или <h:panelGroup> для условного отображения содержимого. Вы можете использовать ключевое слово empty в EL, чтобы проверить, не является ли переменная нулевой или пустой. Итак, всем при этом следует сделать:

<ui:fragment rendered="#{not empty extra.donwtime_notice}">
    <div class="pnx-msg pnx-msg-warning clearfix">
        <i class="pnx-msg-icon pnx-icon-msg-warning"/>
        <span class="pnx-msg-content"><h:outputText value="#{extra.downtime_notice}" escape="false"/></span>
    </div>
</ui:fragment>

Или, используя <h:panelGroup layout="block">, который уже отображает <div>:

<h:panelGroup layout="block" styleClass="pnx-msg pnx-msg-warning clearfix" rendered="#{not empty extra.donwtime_notice}">
    <i class="pnx-msg-icon pnx-icon-msg-warning"/>
    <span class="pnx-msg-content"><h:outputText value="#{extra.downtime_notice}" escape="false"/></span>
</h:panelGroup>

Обратите внимание, что некоторые могут использовать для задания <f:verbatim>, но этот тег устарел, начиная с JSF2.

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


Не связанный с конкретной проблемой, тег </br> является недопустимым HTML, поэтому я опустил его в примерах.

person BalusC    schedule 17.01.2013
comment
Работает отлично. Еще один вопрос, чтобы не создавать еще один поток... Я пытаюсь сравнить значение downtime_notice с ' '. Я пытался использовать что-то вроде rendered=#{extra.downtime_notice ne ' '}, но не работает. Любые идеи? - person Nacho321; 17.01.2013
comment
Значения файла свойств по умолчанию обрезаются. Значит, вам нужно что-то еще. Возможно _? - person BalusC; 17.01.2013
comment
По какой-то причине он возвращает ошибку. Код выглядит следующим образом: ‹ui:fragment rendered=#{extra.downtime_notification ne '?'}›. Может быть, предложение ne не работает для ui:fragment? - person Nacho321; 18.01.2013