f:onchange事件的ajax

时间:2013-07-23 09:27:57

标签: javascript ajax jsf

我有一个特殊问题:我需要通过客户端onchange事件向服务器发送一个值而不提交整个表单。是否有一些功能可以做到?

我可以通过Javascript处理该组件:

<h:inputText onchange= ...js... >

我可以通过ajax发送一个值:

<f:ajax execute="name"/>

如何将它组合在一起?


它已经解决了,但我有另一个问题:

什么是更快处理 - Ajax处理事件或JavaScript处理?

2 个答案:

答案 0 :(得分:6)

简单,AJAX专为在页面上发生的部分提交/更新而设计。您只需指定<f:ajax>标记的event属性,并根据需要将其设为change。根据部分表单提交,在标记的execute属性中指定要在服务器上更新的组件的ID。但由于execute的{​​{1}}的默认值正好是<f:ajax>(触发事件的组件),因此您可以完全省略它。像这样:

@this

这样,在JavaScript更改事件发生后,您的bean模型将通过AJAX在后台更新。

关于哪个事件发生第一个问题,您需要了解触发向服务器发送AJAX请求的JavaScript事件,因此,后者首先发生。此外,通过指定<h:inputText id="text" value="#{bean.text}"> <f:ajax event="change"/> </h:inputText> 属性,您可以附加客户端回调以在成功提交AJAX响应时获取JavaScript钩子。

答案 1 :(得分:0)

我的代码:

<h:inputText id="appleNO" value="#{xxxModel.appleNO}" size="3" maxlength="3">
  <f:ajax event="blur" execute="@form" listener="#{xxxController.xxxAction()}" render="appleNO"/>
</h:inputText>

当文本框丢失了(onblur)时,将触发xxxAction。