我有一个特殊问题:我需要通过客户端onchange事件向服务器发送一个值而不提交整个表单。是否有一些功能可以做到?
我可以通过Javascript处理该组件:
<h:inputText onchange= ...js... >
我可以通过ajax发送一个值:
<f:ajax execute="name"/>
如何将它组合在一起?
它已经解决了,但我有另一个问题:
什么是更快处理 - Ajax处理事件或JavaScript处理?
答案 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。