![](/img/trans.png)
[英]JSF + jQuery : AJAX Rendering forces a re-binding to client side (jQuery) events
[英]Notify JSF Server side about changes on (DOM) client-state made by Jquery/Ajax
使用基於組件的框架(如JSF),可以定義復選框的組件:
<h:selectManyCheckbox value="#{user.favNumber1}">
<f:selectItem itemValue="1" itemLabel="Number1 - 1" />
<f:selectItem itemValue="2" itemLabel="Number1 - 2" />
<f:selectItem itemValue="3" itemLabel="Number1 - 3" />
</h:selectManyCheckbox>
生成的(x-html)代碼如下所示:
<table>
<tr>
<td>
<input name="j_idt6:j_idt10" id="j_idt6:j_idt10:0" value="1" type="checkbox" />
<label for="j_idt6:j_idt10:0" class=""> Number1 - 1</label></td>
<td>
<input name="j_idt6:j_idt10" id="j_idt6:j_idt10:1" value="2" type="checkbox" />
<label for="j_idt6:j_idt10:1" class=""> Number1 - 2</label></td>
<td>
<input name="j_idt6:j_idt10" id="j_idt6:j_idt10:2" value="3" type="checkbox" />
<label for="j_idt6:j_idt10:2" class=""> Number1 - 3</label></td>
<td>
</tr>
</table>
一個jQuery函數在一個事件(單擊“按鈕”)上更改此組件的狀態(假設值為“ 1”的框):
<script> // or in $(document).ready(){}
$('#button').click(function(){
var $checkbox = $(this).find('#j_idt6:j_idt10:0');
$checkbox.attr('checked', !$checkbox.attr('checked'));
});
</script>
我如何通知JSF客戶端狀態已更改。 在這個級別上,JSF仍然認為該復選框的值例如為0,而現在值為1。這導致狀態不一致...
我有什么選擇?
我想到了其他(Rich-,Primes-,MyFaces)上對JSF的AJAX-支持,但是我仍然願意使用它,因為我要更新組件,因為我正在構建具有許多功能(顯示操作)的富客戶端。 ,Jquery UI小部件,Web遠程處理,動態行為,Web服務,視覺效果等)。 DOM客戶端狀態應該被高度操縱,而Jquery是必須的。.因此不能將其放在一邊。
謝謝!
由於您使用的是JSF2,因此您應該使用f:ajax (有關它的更多信息,Google)
這樣(您的情況下不需要jquery)
<h:selectManyCheckbox value="#{user.favNumber1}">
<f:selectItem itemValue="1" itemLabel="Number1 - 1" />
<f:selectItem itemValue="2" itemLabel="Number1 - 2" />
<f:selectItem itemValue="3" itemLabel="Number1 - 3" />
<f:ajax listener="#{user.someMethod}" />
</h:selectManyCheckbox>
user
bean中的何處
public void someMethod(AjaxBehaviorEvent ev) {
System.out.println(favNumber1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.