a4j 重新渲染 inputText onSubmit 事件

发布于 2024-11-27 16:48:40 字数 1392 浏览 0 评论 0原文

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

它工作得很好

<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>

正在重新加载整个页面,而不仅仅是结果面板(但显示结果)。我什至尝试在最后一个示例中添加 。 [编辑:好的,return false 只是被 AJAX 支持调用覆盖]

当按下“enter”键时,如何使我的 inputText 字段重新呈现。 (因此表单已提交)但不想提交表单。

编辑:再次是我的错,我在这里简化了示例代码太多。我有一个带有 a4j:support 的第二个元素,形式相同,因为我删除了那里的 a4j 标签并将 onchange 事件更改为表单提交,它也正在工作。

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

I tried different combinations to just rerender the result pannel.

it works fine with

<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>

But i just want to submit it when enter is pressed. So i tried

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

that returned an empty result even if it shouldn't be empty and

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

was reloading the whole page and not the result panel only (but results where shown). I even tried to add <h:form onSubmit="return false;"> in the last example. [EDIT: ok that return false is just overwritten by the AJAX support call]

How do i make my inputText field rerender when "enter" is pressed. (so the form is submitted) but don't want to submit the form.

EDIT: again my bad, i simplified the example code here too much. i had a second element with a4j:support in the same form, since i removed the a4j tag there and changed the onchange event to a form submit, too, it is working.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紧拥背影 2024-12-04 16:48:40

尝试这样:

<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>

Try like this:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文