PrimeFaces CommandButton: динамически включить / отключить значок
командная кнопка PrimeFaces позволяет указать значок:
<p:commandButton value="Press me" icon="redBall" ... />
однако мне нужно включить / отключить значок в зависимости от управляемого свойства компонента JSF.
пробовал
<p:commandButton value="Press me" icon="#{bean.iconClass}" ... />
это работает для выбора разных значков, но не позволяет полностью отключить значок (т. е. получить тот же рендеринг, как без ). Я могу вернуть пустую строку в getIconClass()
, но PrimeFaces все равно будет отображать extra <span>
для значок внутри кнопки и CSS-стиль заставляет этот промежуток быть видимым со значком по умолчанию.
есть ли способ сказать PrimeFaces "я не хочу никакого значка вообще "(кроме вынимания
2 ответов
Я могу придумать 2 способа, не дублируя кнопку.
-
поставьте значок как
<f:attribute>
, условно добавил<c:if>
.<p:commandButton ...> <c:if test="#{not empty bean.icon}"><f:attribute name="icon" value="#{bean.icon}" /></c:if> </p:commandButton>
-
создать класс стиля, который полностью скрывает значок и поставить его условно.
.hideicon .ui-icon { display: none; } .hideicon .ui-button-text { padding-left: 1em; }
С
<p:commandButton ... icon="#{bean.icon}" styleClass="#{empty bean.icon ? 'hideicon' : ''}" />
хромой решение будет иметь 2 командные. Один с определением значка и один без. А затем сделайте правильный.