有一个提交表单如下:
<html:form action="/createRoleDepartment.do">
我想通过列表框选择,把action的内容改变为"/createRoleUsers.do"。
开始的时候是想通过javascript实现,但是尝试多次都不成功。请各位指明,谢谢!

解决方案 »

  1.   

    你可以用JAVASCRIPT呀,只是你点提交的时候不要提交FORM,提交FORM在JS中实现。也就是你的按钮是BUTTOM而不是SUBMIT
      

  2.   

    <html:form action="/createRoleDepartment.do" name="abcfrm" id="abcfrm"><select name="myactionurl" onChange="getactionurl();">
    <option value="createRoleUsers.do">创建角色用户</option>
    <option value="createRoleDepartment.do">创建角色部门</option>
    <option value="abcdef.do">做xxxx操作</option>
    </select>在head部分写入
    <script language="javascript">
    function getactionurl()
    {
        var vfrm = document.getElementById("abcfrm");
        vfrm.action=event.srcElement.value;
    }
    </script>
      

  3.   

    html:form 里面没有name和id属性。
      

  4.   

    现在已经成功改变 html:form 里的action。我的想法是通过列表选择,可以动态选择.do,从而动态改变Action和ActionForm。当加入javascript程序(td2.innerHTML="<html:text property='roleName'/> ";
    td4.innerHTML="<html:text property='privilege'/> ";)改变网页中的文本框时,程序就执行错误,提示找不到formbean。难道程序一开始就把Action和网页对应好,没有办法改变吗?如果没有加上上面2行程序,程序能够正常执行,也可以随意选择.do执行。
    请各位给出解决方法,谢谢!使用的方法如下:
    <script language=JavaScript> 
    function bao(s) 
    {
      if(s=="users"){
        var vfrm = document.getElementById("frm");
        vfrm.action="createRoleUsers.do"; 
        
        td1.innerHTML="<span class='STYLE1'>*</span>角色名:"; 
        td2.innerHTML="<html:text property='roleName'/> ";
        td3.innerHTML="<span class='STYLE1'>*</span>角色优先级:";
        td4.innerHTML="<html:text property='privilege'/> ";
        td5.innerText=" ";
        td6.innerText=" "; 
      }       

    </script>
    <html:form styleId="frm" action="/createRoleDepartment.do">
      

  5.   

    能不能不用Struts自代的标签,直接用Form,里面的相应的属性应该是可以取的。
      

  6.   

    改用html:button,不要用html:submit
    按下按钮时,取得select中的值,然后改变form中的action,接着提交
    html:form是有name属性的
      

  7.   

    我写了一个小程序试验了一下,证实可以动态改变Action和Form,不过没有用Struts标签。
    可以参考一下。
    struts-config.xml:
    <action-mappings >
        <action
          name="testForm1"
          path="/testAction1"
          scope="request"
          type="com.iss.struts.action.TestAction1" >
          <forward name="test1" path="/test1.jsp"/>
         </action>
        <action
          name="testForm2"
          path="/testAction2"
          scope="request"
          type="com.iss.struts.action.TestAction2" >
    <forward name="test2" path="/test2.jsp"/>
    </action>
      </action-mappings>JSP:
    <%@ page language="java" pageEncoding="gbk"%><html locale="true">
      <head>
        <title>MyJsp.jsp</title>
      </head>
      <script language=JavaScript> 
    function bao() 
    {
      
        var vfrm = document.getElementById("frm");
        var td1 = document.getElementById("td1");
        var td2 = document.getElementById("td2");
        var td3 = document.getElementById("td3");
        var td4 = document.getElementById("td4");
        if(td1.innerHTML=="Login:"){
         vfrm.action="testAction2.do"; 
         td1.innerHTML="roleName:"; 
         td2.innerHTML="<input type='text' name='roleName'/> ";
         td3.innerHTML="privilege:";
         td4.innerHTML="<input type='text' name='privilege'/> ";
        }
        else{
         vfrm.action="testAction1.do"; 
         td1.innerHTML="Login:"; 
         td2.innerHTML="<input type='text' name='login'/> ";
         td3.innerHTML="Password:";
         td4.innerHTML="<input type='text' name='password'/> ";
        }

    </script>
      
      <body>
        <form name="frm"  action="testAction1.do" method="post">
          <table border="0">
            <tr>
              <td id="td1">Login:</td>
              <td id="td2"><input type="text" name="login" /></td>
            </tr>
            <tr>
              <td id="td3">Password:</td>
              <td id="td4"><input type="text" name="password" /></td>
            </tr>
            <tr>
              <td colspan="2" align="center"><input type="submit" value="submit" /></td>
            </tr>
          </table>
        </form>
        <input type="button" value="changeAction" name="change" onclick="bao();"/>
      </body>
    </html>
    testForm1:
        private String login;
        private String password;testForm2:
        private String roleName;
        private String privilege;
      

  8.   

    感谢apricot_xiao(猪猪最爱) 给出代码。
    但是发现login,password等变量不会自动获取数据,换句话说ActionForm不起作用;这样,在Action中,当提取testForm1中的数据时,就会出现异常。
    请问如何处理,谢谢
      

  9.   

    to: idealTorch() ( ) 信誉:100    Blog  2006-10-9 16:19:44  得分: 0 html:form 里面没有name和id属性。
    ============================================
    html:form 解析成form标签以后,它的name属性就是html;form标签对应的formbean的类名的首字母小写在JS里还可以通过这样的语句得到form:
    document.forms[0].action="";
    document.forms[0].submit();
    document.forms[0]代表网页上第一个form表单,如果有多个,依次类推  
     
      

  10.   

    apricot_xiao(猪猪最爱) 给出的代码formbean无法自动获取数据,是因为,form表但的name属性没有和formbean的类名对应起来,form表单的name属性必须和formbean的类名的首字母小写对应,且表单里的每个元素如text标签的name属性必须和formbean的属性字段名字一致,这样formbean 才会自动从表单获取数据!