JSF onchange, а затем сохранить - PullRequest
1 голос
/ 17 декабря 2011

У меня есть текстовое поле. Как только пользователь нажимает за пределами текстового поля, приведенный ниже код вызывает doSomethingOnValueChange. И все работает как положено. С другой стороны, если пользователь редактирует мое текстовое поле и непосредственно нажимает кнопку сохранения, сначала вызывается метод save, а позже вызывается doSomethingOnValueChange. Как я могу это исправить?

 <ui:define name="label">My Text box</ui:define>
 <h:inputText required="true" value="#{myBean.myTextBox}" 
    immediate="true" valueChangeListener="#{controller.doSomethingOnValueChange}">
      <a4j:support ajaxSingle="true" event="onchange" />         
 </h:inputText>

 <h:commandButton value="Save" action="#{controller.save}" />

Ответы [ 3 ]

0 голосов
/ 22 декабря 2011

попробуйте это:

<f:metadata>
<f:viewParam name="p" value="#{myBean.myTextBox}" />
</f:metadata>

<script type="text/javascript">
function getValue()
  {
  var x=document.getElementById("form:text").value;
  return x;
  }
</script>



<h:inputText required="true" id="text"
            valueChangeListener="#{controller.doSomething}" >
            <a4j:param noEscape="true" value="getValue()" name="p" />
            <a4j:ajax event="change" />
        </h:inputText>

    <h:commandButton value="Save" action="#{controller.save}" />
0 голосов
/ 22 декабря 2011

Я добавил requestDelay = "30" к моей кнопке сохранения. Поменял кнопку на кнопку a4j. Это исправило мою проблему. Я также добавил Глобальную очередь в мой web.xml

<context-param>
   <param-name>org.richfaces.queue.global.enabled</param-name>
   <param-value>true</param-value>
</context-param>
0 голосов
/ 17 декабря 2011

попробуйте использовать onkeyup событие, которое исправит это

 <a4j:support ajaxSingle="true" event="onkeyup" />  
...