2010-08-17 69 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”。