問題︰我想要做的是下拉式選單的項目選擇後,到後台執行selectResult,其中會改變一個變量叫isSameResult,在oncomplete時把參量放到checkSameService的javascript函數中再做處理。
//-----**index.jsf**----- <p:autoComplete ...> <p:ajax event="itemSelect" listener="#{bean.selectResult}" update="..." oncomplete="checkSameService(#{bean.isSameResult});"/> </p:autoComplete> <script> function checkSameService(result) { alert(result); } </script>
//-----**Bean.java**----- public void selectSerResult(SelectEvent event) { isSameResult = true; }
雖然selectResult是處理完,變量也更新了(isSameResult由false變為true),但傳到javascript時卻未更新(仍然是false)。
解決方案︰上網找了一陣子發現可以從後台把參數放入javascript︰
解決方案︰上網找了一陣子發現可以從後台把參數放入javascript︰
//-----**index.jsf**----- <p:autoComplete ...> <p:ajax event="itemSelect" listener="#{bean.selectResult}" update="..." oncomplete="checkSameService(xhr, status, args);"/> </p:autoComplete> <script> function checkSameService(xhr, status, args) { alert(args.isSame); } </script>
//-----**Bean.java**----- public void selectSerResult(SelectEvent event) { isSameResult = true; RequestContext context = RequestContext.getCurrentInstance(); context.addCallbackParam("isSame", isSameResult ); }
然後就可以成功在完成處理後把結果寄回到javascript了。
Reference: PrimeFace - loginDemo
No comments:
Post a Comment