2010-08-17 68 views
2

我有以下文件:如何使用按鈕將值設置爲隱藏屬性?

view.jsp的

<@ page import=... 
<bean:define id="mForm" name="myForm" type="MyForm"/> 
<html:form action="MyFoo" method="post" styleId="myForm" enctype="multipart/form-data"> 
<html:hidden property="boo"/> 
<input type="button" value="Press me" onclick="javascript:changeBoo()"/> 
</html:form> 

MyForm.java

class MyForm { 
    private boolean boo; 
    public void setBoo(boolean boo){ 
     this.boo = boo; 
    } 
    public boolean getBoo(){ 
     return this.boo; 
    } 
} 

MyFooAction.java

public class MyFooAction extends BaseAction { 

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 
     ActionForward aForward = null; 
     String forward = "success"; 

     try { 
      MyForm myForm = (MyForm) form; 
      String boo = (String)request.getParameter("boo"); 
      if(boo.equals("true")){ 
       System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>DONE"); 
      } 
      else { 
       //some code here 
      } 
      aForward = mapping.findForward(forward); 
     } 
     catch (Exception e) { 
      throw new Exception(); 
     } 

     return aForward; 
    } 
} 

的問題是如何實現changeBoo()在JavaScript爲了改變th e值爲boo,並調用MyFooAction,正確值爲boo

回答

3

首先,將您的按鈕更改爲type="submit"。這會照顧你提交表格。請注意0​​現在如何爲您的onclick屬性返回一個值。如果你的函數返回true,這將提交表單。

此外,你需要一個id屬性添加到您的隱藏字段,以便您可以輕鬆地從JavaScript獲得對它的引用:

<html:hidden property="boo" id="booId" /> 
<input type="submit" value="Press me" onclick="return changeBoo();"/> 

然後,它只是一個創建JavaScript函數的事:

function changeBoo(){ 
    var boo = document.getElementById('booId');  
    boo.value = 'The new value'; 
    return true; 
} 
+0

謝謝:)但是id不是必需的。沒有它,一切工作正常。 錯誤:屬性:id不是有效的屬性名稱 – 2010-08-17 13:45:20

1

PS在您<html:form>...</html:form>,請確保您有辦法提交表單。這通常通過添加<html:submit>來完成。

現在,回到你的問題,你的Javascript函數將是這樣的(假設你的ActionForm在struts-config.xml中指定的名稱是「myForm」)。

fumction changeBoo() { 
    var boo = document.myForm.boo; 
    if ("true" == boo.value.toLowerCase() || "yes" == boo.value.toLowerCase() || "1" == boo.value.toLowerCase()) { 
    boo.value = "false"; 
    } else { 
    boo.value = "true"; 
    } 
} 

記住,Struts的轉換布爾值「真」或「假」,「是」或「否」,「0」或「1」。