gpt4 book ai didi

jquery - 通知 JSF 服务器端有关 Jquery/Ajax 对 (DOM) 客户端状态所做的更改

转载 作者:行者123 更新时间:2023-12-01 03:19:31 25 4
gpt4 key购买 nike

使用基于组件的框架(如 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。这会导致状态不一致...

我有什么选择?

我想到了 JSF 在其他(Rich-、Primes-、MyFaces)上的 AJAX 支持,但我仍然愿意使用它,因为我知道更新我的组件,因为我正在构建一个具有许多功能的富客户端(显示操作、Jquery UI 小部件、Web 远程处理、动态行为、Web 服务、视觉效果等)。 DOM 客户端状态应该被大量操纵,而 Jquery 是必须的.​​.所以它不能被抛在一边。

谢谢!

最佳答案

由于您使用的是 JSF2,因此您应该使用 f:ajax (谷歌更多有关它的信息)

像这样(您的情况不需要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);
}

关于jquery - 通知 JSF 服务器端有关 Jquery/Ajax 对 (DOM) 客户端状态所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com