![](/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.