JSF outputtext условное отображение / стиль. По-разному в зависимости от состояния


Я использую JSF, и у меня есть выходной текст для примера "qwerty", который я хочу отобразить / отформатировать по-другому, если будут выполнены некоторые условия. Так, например, если:

  • cond1 верно, то я хочу отобразить qwerty
  • cond1 является ложным, то я хочу отобразить qwerty

И так далее.

Есть ли способ?

4   6   2013-03-14 01:06:17

4 ответа:

Вы можете использовать тернарный оператор для выбора стиля, который вы хотите применить в зависимости от условия:

<h:outputText value="qwerty" 
    style="#{backingBean.cond1 ? 'text-decoration:line-through;':'fontstyle:italic;'}">

И было бы еще лучше, если бы вы использовали классы css в порядке встроенных стилей. Удачи вам!

Использование встроенного в EL' condition ' также возможно, см. использование большего, чем логическое выражение, в отображаемом атрибуте. Читайте также обсуждение использования inline в xhtml или в javabean

Аккуратный способ заключается в создании CSS классов

<h:outputText value="qwerty" 
     styleClass="#{backingBean.cond1 ? 'classA' : 'classB'}" /> 

В подобных ситуациях я использую следующие

<h:outputText value="yourValueFromYourBeanOrWhatever" styleClass="anArbitraryName#{managedBean.condition}"/>

И в моем CSS файле я определяю классы:

.anArbitraryNametrue{}

И

.anArbitraryNamefalse{}

С условным. Перед допросом вы ставите условие. Если true, он возвращает то, что находится перед t ":". Если оно ложно, то возвращает то, что стоит за ":".

<h:outputText value="#{condition ? 'true' : 'false'}" />