JSF 2.0:按 ENTER 时的 ajax 请求
Posted
技术标签:
【中文标题】JSF 2.0:按 ENTER 时的 ajax 请求【英文标题】:JSF 2.0: ajax request when press ENTER 【发布时间】:2012-05-17 11:18:14 【问题描述】:当我在 inputText 字段中单击“输入”时,我需要执行 ajax 请求,而无需刷新页面。 这是我的代码:
<h:form id="form-test">
<p:growl id="messages" showDetail="true"/>
<p:inputText id="inputEnter"
onkeypress="if (event.keyCode == 13) onchange(); return false; "
value="#bean.content">
<f:ajax event="change" listener="#bean.save" update="messages"/>
</p:inputText>
</h:form>
在 bean 中我有一个简单的方法:
public void save(AjaxBehaviorEvent event)
...
一切正常,但它刷新页面!为什么 ?我该如何解决?
【问题讨论】:
【参考方案1】:已经有一个主题与您的问题类似How to handle the ENTER keypressed to trigger an onBlur() event?
我只是改变
onkeypress="if (event.keyCode == 13) e.preventDefault();
inputEnter.onchange(); return false; "
如果你使用 JQuery
$('#form-test\\:inputEnter').onchange();
【讨论】:
解决了我的问题。我需要在“输入 clic”上从 dataTable 的过滤器中删除一个事件。这是我的代码onkeydown="PF('organicGroupsTable').filter(); return !(event.which === 13 || event.keyCode === 13);"
谢谢!【参考方案2】:
我认为你需要输入 render param ,所以它不会再次渲染整个页面。
<h:form id="form-test">
<p:growl id="messages" showDetail="true"/>
<p:inputText id="inputEnter"
onkeypress="if (event.keyCode == 13) onchange(); return false; "
value="#bean.content">
<f:ajax event="change" render="messages" listener="#bean.save" update="messages"/>
</p:inputText>
</h:form>
【讨论】:
以上是关于JSF 2.0:按 ENTER 时的 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章
JSF 2.0 复合组件 - ajax 渲染参数 OUTSIDE 组件定义