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 组件定义

JSF 2.0 动态删除组件

JSF 2.0中的AJAX onSubmit验证

JSF 2.0 有比 Icefaces 更好的 Ajax Push

JSF 2.0 和 Facelets

JSF 2.0 每页生成多个请求