在JSF中一个按钮可以同时实现onclick和action两个事件,但是在动态生成的表单中一个按钮就只有了onclick属性,这个时候如果要提交数据怎么办呢?可以用javascript的click()方法。

方法很简单用一个按钮去激活另一个按钮: 

这个是动态生成的按钮

 

 
  
  1. out.print("<input type=\"button\" class=\"button01\" value=\"删除\" onclick=\"deleteLine('"+array[1]+"','"+itemId+"','"+i+"');\">"); 

 

 
  
  1. function deleteLine(array,itemId,num){  
  2.    str = array+":"+itemId+":"+num;  
  3. document.all("form1:deletebutton").click();  
  4.             } 

看到了,这里调用了deletebutton的click()方法,这样就激活了deletebutton的onclick事件,

 

 
  
  1. <h:inputHidden id ="doDelete" value="#{eva_showSelfJobDetailBB.doDelete}"/> 

 

 
  
  1. <h:commandButton id="deletebutton" value="删除" style="display:none;" onclick="return deleteData();" action="#{eva_showSelfJobDetailBB.delete}"> 

 

 
  
  1. function deleteData(){  
  2.     document.all("form1:doDelete").value=str;  
  3.  return true;  
  4.             } 

这里的str是个全局变量,这样以前台的数据就可以与后台进行交互了。