我的jsp页面有1个form需要多个submit按钮并调用同1个action的多个方法,jsp代码如下:

<s:submit id="search" name="search" type="button" action="listUserAction" method="list" value=" 搜索 " align="left">
</s:submit>
<s:submit id="add" name="add" type="button" action="listUserAction" method="viewAdd" value=" 新增用户 " align="left">
</s:submit>

struts文件如下:
<action name="listUserAction" class="Frame0101Action">
            <result name="success">/jsp/0100/UserList.jsp</result>
            <result name="add">/jsp/0100/UserAdd.jsp</result>
            <result name="error">/jsp/error.jsp</result>
        </action>
Action中有多个方法:list方法返回:success/error
viewAdd返回add
但是我点击搜索和新增用户按钮都是调用的viewAdd方法,如果把新增用户的submit去掉,就可以调用list方法了,再继续在jsp中增加调用其他方法的按钮都还是调用viewAdd方法,我不知道为什么总是调用同一个方法,难道有什么参数没设置对吗?请各位专家指点,谢谢!!

解决方案 »

  1.   

    LZ如果非要用<s:submit>的method实现动态方法可以这样,我认为完全没必要用s:submit的method来实现~
    <action name="listUserAction" class="Frame0101Action"  method="list" //你要用s:submit这个必须配置,而且只能配置1个>
           <result name="success">/jsp/0100/UserList.jsp </result>
           <result name="error">/jsp/error.jsp </result>
    </action> <action name="addAction" class="Frame0101Action" method="viewAdd">
           <result name="add">/jsp/0100/UserAdd.jsp </result>
           <result name="error">/jsp/error.jsp </result>
    </action>在<s:submit onclick="js函数改变form的action">
      

  2.   

    我试过了,还是不行,报HTTP Status 404 - /app/addUserAction--------------------------------------------------------------------------------type Status reportmessage /app/addUserActiondescription The requested resource (/app/addUserAction) is not available.
    struts.xml配置:
    <action name="listUserAction" class="Frame0101Action" method="list" >
                <result name="success">/jsp/0100/UserList.jsp</result>
                <result name="error">/jsp/error.jsp</result>
            </action>
            
    <action name="addUserAction" class="Frame0101Action" method="viewAdd" >
                <result name="add">/jsp/0100/UserAdd.jsp</result>
                <result name="error">/jsp/error.jsp</result>
            </action>
    js代码:
    function AddUser() {
    alert("AddUser");
    document.UserForm.action = "addUserAction";
    document.UserForm.submit();
    }
    jsp中只能用传统的标签:
    <input type="button" onclick="AddUser()" value=" 新增用户 " align="left">能够执行到js中,但是就是报找不到这个action,我查了下同一个action class在struts中应该可以有多个别名的,为什么找不到呢?
    请各位大大指点!
      

  3.   

    哦,对了,即便在js中用:
    <s:submit id="add" name="add" type="button" onclick="return AddUser()" value=" 新增用户 " align="left">
    </s:submit>
    还是不行,报一样的错!
      

  4.   

    什么路径?我只用其中1个按钮就没有问题,如:只有“搜索”按钮点击后只执行搜索且返回UserList.jsp的页面,只有“新增用户”按钮,点击后就跳到UserAdd.jsp页面,但是2个在一起就不行,随便点击哪个总是执行1个“新增用户”那个按钮的方法,即跳转到UserAdd.jsp页面。既然能够跳转页面且在后台跟踪方法也能看到就说明路径应该没有问题吧?不知道是哪里的配置错了。
      

  5.   

    晕了 
    <s:submit id="add" name="add" type="button" onclick="return AddUser()" value=" 新增用户 " align="left">
    </s:submit> 
    你加method了么......
      

  6.   

    description The requested resource (/app/addUserAction) is not available.  你出这个问题就是路径不对你不加method当然只调用1个方法了
      

  7.   

    document.UserForm.action = "addUserAction"; 
    这个action是html标签属性的,必须是绝对或相对url地址
      

  8.   

    在这里加method,不就是跟最开始那种情况一样的吗?其实在<s:submit>里面加属性action="..."跟在js里面改变action不都是一回事吗?不过我还是试了,不行.method无论是在<s:submit>还是在struts.xml里面都加了,没用,始终都是调用1个方法,另1个无效。
      

  9.   

    <s:submit> 和 struts.xml 2个都得加上method
      

  10.   

    一个用s:submit
    另一个用button , onclick方法中document.UserForm.action="改成url地址"
      

  11.   

    Struts2中,这样就可以了:<s:form action="listUserAction">
    <s:submit id="search" name="method:list" type="button"  value=" 搜索 " align="left">
    </s:submit>
    <s:submit id="add" name="method:viewAdd" type="button"  value=" 新增用户 " align="left">
    </s:submit> 
    </s:form>
      

  12.   

    document.UserForm.action = "addUserAction.action"; 
      

  13.   

    14楼的方法仍然不行,不过我用了个笨办法,在jsp中加了个<s:hidden>,name就是action里面定义的1个变量,作为调用方法的参数,如调用list,就在js里设置该hidden的值为“list”,调用viewAdd,就在js里设置为“viewAdd”,然后在action的execute里面判断,再分别执行对应的方法即可。已经测试通过,因为以前struts1.x就这么传过method,没想到struts2还用,哎,不知道是我的方法问题还是struts2本身的问题哦?
      

  14.   

    可以做成多个表单:
    <s:form action="xxx" method="yyy">
    ....
    <s:submit value="搜索"/>
    </s:form>
    <s:form action="xxx" method="zzz">
    ....
    <s:submit value="新增用户"/>
    </s:form>
    ....
      

  15.   

    我写的东西是copy这里的:http://www.blogjava.net/nokiaguy/archive/2008/04/16/193287.html
    <s:submit name="save" value="保存" align="left" method="save"/>
    <s:submit name="print" value="打印" align="left" method="print" />Struts.xml
    <action name="submit"  class="action.MoreSubmitAction">
                <result name="save" >
                    /result.jsp
                </result>
                <result name="print">
                    /result.jsp
                </result>
            </action>