a4j重新呈现inputText onSubmit事件

时间:2011-08-02 18:20:31

标签: jsf facelets ajax4jsf

我尝试了不同的组合来重新渲染结果面板。

它适用于

<h:form><a4j:region>
<h:inputText value="#{myBean.keyword}">
<a4j:support event="onchange" reRender="results" eventsQueue="search" oncomplete="initResults();" />
</h:inputText>
</a4j:region>
</h:form>

但是我只想在按下输入时提交它。所以我试过

<h:form reRender="results" eventsQueue="search" oncomplete="initResults();"><a4j:region>
<h:inputText value="#{myBean.keyword}"/>
</a4j:region>
</h:form>

返回空结果,即使它不应为空并且

<a4j:region>
<h:form>
<a4j:support event="onsubmit" reRender="results" eventsQueue="search" oncomplete="initResults();" />
<h:inputText value="#{myBean.keyword}"/>
</h:form>
</a4j:region>

正在重新加载整个页面,而不仅仅是结果面板(但显示的结果)。我甚至试图在最后一个例子中添加<h:form onSubmit="return false;">。 [编辑:好的,返回false只是被AJAX支持调用覆盖]

当按下“enter”时,如何让我的inputText字段重新渲染。 (所以表格已提交)但不想提交表格。

编辑:我的不好,我在这里简化了示例代码。我有一个第二个元素与a4j:支持相同的形式,因为我删除了那里的a4j标签并将onchange事件更改为表单提交,它也正常工作。

<h:selectOneMenu value="#{myBean.selectedMetaCategory}" onchange="this.form.submit();">
  <a4j:support ...
  <f:selectItems value="#{myBean.metaSelectItems}"/>
</h:selectOneMenu>

1 个答案:

答案 0 :(得分:1)

试试这样:

<a4j:region>
<a4j:form onsubmit="reRenderResults();">
<h:inputText value="#{myBean.keyword}"/>
</a4j:form>
<a4j:jsFunction name="reRenderResults" reRender="results" eventsQueue="search" oncomplete="initResults();" />
</a4j:region>