2014年10月23日 星期四

jsf valueChangeListener bug

這個問題我認為是個BUG...
就是當 select 來valueChangeListener時,切換bean的資料,
會發現很詭異的inputtext...

假設案例是selector onchange時, 要同時把 OOO(inputtext)改成 "bala"~


當OOO是disable="true" 時,資料會寫上去,有bala~
但是普通輸入時不會(diabled="false")...沒有bala~然後在頁面把內容output出來是沒改的!!
這鬼恐怖的地方在於,在某些頁面(相對簡單)是會動的...
但是有些頁面又不會動....

查了很久~總算看到一個應該是比較好的解就是~
http://stackoverflow.com/questions/14171493/how-to-get-updated-model-values-in-a-valuechangelistener-method

public void changeSelector(ValueChangeEvent event) {
        if(event == null || event.getNewValue() == null)  {
            return ;
        }
       
        if (event.getPhaseId() != PhaseId.INVOKE_APPLICATION) {
            event.setPhaseId(PhaseId.INVOKE_APPLICATION);
            event.queue();
            return;
        }
       
    // Do your original job here. 
    // It will only be entered when current phase ID is INVOKE_APPLICATION.
 
        String key = (String)event.getNewValue();
        this.setXXX(key);
        this.setOOO("bala");
}

另外select (selectOneMenu)
有些鬼是,明明選了項目,但是它鬼資料就是不會跳到你選的選項~
(鬼打牆一直跳在第一個)
注意它的 id 必須要和 bean裡面的property naming 一模一樣!!
感覺很有鬼~但是沒辦法~它就是爛~___~|||
<ice:selectOneMenu id="selector" value="#{bean.selector}" ....



沒有留言: