a4j rerender inputText событие onSubmit - PullRequest
1 голос
/ 02 августа 2011

Я пробовал разные комбинации, чтобы просто перерисовать панель результатов.

он отлично работает с

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

Но я просто хочу отправить его, когда нажата клавиша Enter.Поэтому я попытался

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

Как сделать так, чтобы мое поле inputText повторно отображалось при нажатии «enter».(поэтому форма отправлена), но я не хочу отправлять форму.

РЕДАКТИРОВАТЬ: снова мой плохой, я слишком упростил пример кода здесь.у меня был второй элемент с поддержкой a4j: в той же форме, так как я удалил тег a4j и изменил событие onchange на отправку формы, тоже работает.

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

1 Ответ

1 голос
/ 03 августа 2011

Попробуй так:

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