2015-05-29 76 views
0

我試圖更新JSF組件的styleClass,如果設置值符合某個條件。我可以通過對由某個Ajax事件觸發的整個組件進行再處理來實現它。然而,所提供的事件僅在不合時宜的時間觸發,即,當用戶仍然與該組件交互時,由於重繪而導致中斷。有條件地將「styleClass」應用於組件,而不會重新渲染

是否更新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 */ 
} 

回答

相關問題