JSF onchange然后保存

时间:2011-12-16 22:07:38

标签: jsf richfaces seam

我有一个文本框。只要用户在文本框外部单击,下面的代码就会调用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 :(得分:0)

尝试使用onkeyup事件来修复它

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

答案 1 :(得分:0)

试试这个:

<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}" />

答案 2 :(得分:0)

我在我的保存按钮中添加了requestDelay =“30”。将按钮更改为a4j按钮。这解决了我的问题。我还在我的web.xml中添加了全局队列

<context-param>
   <param-name>org.richfaces.queue.global.enabled</param-name>
   <param-value>true</param-value>
</context-param>