有条件地将“styleClass”应用于组件而不重新渲染

时间:2015-05-29 08:13:45

标签: jsf jsf-2 primefaces

如果设置值满足某个条件,我正在尝试更新JSF组件的styleClass。我可以通过重新呈现由某个ajax事件触发的整个组件来使其工作。但是,提供的事件仅在不合适的时间触发,即当用户仍在与组件交互时由于重绘而导致中断。

是否可以在不重绘的情况下更新styleClass?

工作代码段,但有不良行为:

<p:selectCheckboxMenu id="input" value="#{bean.value}">
  <f:selectItems value="#{bean.options}" />
  <f:attribute name="styleClass" value="#{bean.highlight(bean.value)}" />
  <p:ajax event="toggleSelect" update="input" />
  <p:ajax event="change" update="input" />
</p:selectCheckboxMenu>

支持bean:

@ManagedBean
@ViewScoped
public class Bean {

    private List<String> value;
    private Map<String, String> options;


    public String highlight(Object value) {
        return value == null || value instanceof Collection<?> && ((Collection<?>) value).isEmpty() ? "" : "ui-state-active";
    }

    /* getters & setters */
}

1 个答案:

答案 0 :(得分:0)

  

是否可以在不重绘的情况下更新styleClass?