Когда использовать valueChangeListener или F: ajax listener?
в чем разница между следующими двумя частями кода - в отношении listener размещение?
<h:selectOneMenu ...>
<f:selectItems ... />
<f:ajax listener="#{bean.listener}" />
</h:selectOneMenu>
и
<h:selectOneMenu ... valueChangeListener="#{bean.listener}">
<f:selectItems ... />
</h:selectOneMenu>
2 ответов:
The
valueChangeListenerбудет вызываться только при отправке формы и представленное значение отличается от исходного значения. Таким образом, он не вызывается, когда только HTML DOMchangeсобытие. Если вы хотите отправить форму во время HTML DOMchangeсобытие, то вам нужно будет добавить еще один<f:ajax/>без слушателя(!) к входному компоненту. Это приведет к отправке формы, которая обрабатывает только текущий компонент (как вexecute="@this").<h:selectOneMenu value="#{bean.value}" valueChangeListener="#{bean.changeListener}"> <f:selectItems ... /> <f:ajax /> </h:selectOneMenu>
при использовании
<f:ajax listener>вместоvalueChangeListener, он будет по умолчанию выполняться во время HTML DOMchangeсобытие уже. ВнутриUICommandкомпоненты и входные компоненты, представляющие флажок или radiobutton, он будет по умолчанию выполняться во время HTML DOM
для первого фрагмента (атрибут прослушивателя ajax):
атрибут "слушатель" тега ajax-это метод, который вызывается на стороне сервера каждый раз, когда функция ajax происходит на стороне клиента. Например, вы можете использовать этот атрибут для указания функции на стороне сервера для вызова каждый раз, когда пользователь нажимает клавишу
но второй фрагмент (valueChangeListener) :
ValueChangeListener будет вызываться только при отправке формы, а не при изменении значения входного сигнала
*вы можете посмотреть это удобная ответа
Comments