[SEAM] action与onclick先后顺序

无双Rama 2009-04-20
<h:commandButton action="#{salary.update}" value="修改" onclick="return hintUpdate()" rendered="#{salary.managed}"/>

现在我要这个onclick在action之后执行,可是每次我点击按钮的时候,onclick就先执行了,怎么办呢???
无双Rama 2009-04-20
我要在action 执行之后才能判断onclick 里面的hintUpdate()方法,因为hintUpdate()与后台关联的方法里面有一个布尔值是在action的update()里面才会改变的。。。
sxlkk 2009-04-20
写两个按钮,带js那个先隐藏,执行完方法之后,把action那个隐藏,js那个显示,这样就ok了
无双Rama 2009-04-20
sxlkk 写道
写两个按钮,带js那个先隐藏,执行完方法之后,把action那个隐藏,js那个显示,这样就ok了


我只想在点击“修改”按钮时,后台判断完之后 ,页面弹出提示框,而不是点击两次按钮啊~~~~
sxlkk 2009-04-20
这个对你应该有点用http://seam.group.iteye.com/group/topic/10669?page=2
无双Rama 2009-04-21
已经解决了。。。非常感谢 sxlkk的帮助!! 
但是又出现了一个小问题,每次我点按钮的时候它总是弹出上一次的动作的提示框。。。
JS代码:
 function hintUpdate(){
          if(document.getElementById("form1:aa").value=="update"){   
            alert("修改成功!");   
           }
       }

	      function hintPersist(){
	          if(document.getElementById("form1:aa").value=="persist"){   
	            alert("新增成功!");   
	           }
	       }

页面
 <h:form id="form1">
  <h:inputHidden id="aa" value="#{salaryModelApplicationHome.isexe}" />
<h:commandButton action="#{salaryModelApplicationHome.persist}" value="新增" onclick="return hintPersist()" rendered="#{!salaryModelApplicationHome.managed}"/>	
<h:commandButton action="#{salaryModelApplicationHome.update}" value="修改" onclick="return hintUpdate()" rendered="#{salaryModelApplicationHome.managed}"/>


后台:
public String update() {
	    this.setIsexe("update");
....}
public String persist() {
		this.setIsexe("persist");
...}


第一次无论是新增还是修改,都不会弹出提示框,第二次点按钮就会弹出第一次动作的提示框。。。。。怎么解决呢???
sxlkk 2009-04-21
你应该把名字为aa的隐藏的值放到request请求里面,再次点击时请求会 失效,这时aa不赋值,或者给他不符合js里判断条件的值,这样只是在成功时会弹出提示框,呵呵呵
无双Rama 2009-04-21
我如何放在request请求里面啊?我这个不是servlet, 也不懂怎么放在request当中。。这还是说明了onclick会在action之前执行,其实第一次是执行了,只是js方法比较aa的value与之不匹配所以没有弹出提示框吧
sxlkk 2009-04-21
我在这里面写的就是放到request里面的一个例子,一看就明白了
http://seam.group.iteye.com/group/topic/10669?page=2
5day 2009-04-21
最简单的办法是不是
h:commandButton
换为
a:commandButton

onclick
换为
oncomplete

?
Global site tag (gtag.js) - Google Analytics