struts2中一个对应两个action怎么写?

时间:2021-07-06 19:38:43
用<html>标签的我会.通过脚本可以把处理的action值改变.但如果换成<s:form>的不会啊,试了好久都没弄好.请高手指点一下.
下面就是两个表单, 第一个通过<html>标签提交的没问题.action可以正常响应.
但是第二个<s:form>表单没弄好.不知道哪出问题了.老是
警告: No configuration found for the specified action: '/login3.jsp' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
我觉得应该是写法有问题.
action 配置

<action name="*_Action" class="org.action.LoginRegistAction" method="{1}">
<result name="input">/login3.jsp</result>
<result name="error">/error2.jsp</result>
<result name="success">/welcome3.jsp</result>
</action>
表单一

<table width="300" align="center">
<form action="login_Action.action" method="post">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td><input type="submit" value="登陆"/></td>
<td><input type="submit" value="注册" onClick="regist();"/></td>
</tr>
</form>
</table>
<script>
function regist()
{
//获取页面的第一个表单
targetForm = document.forms[0];
//动态修改表单的action属性
targetForm.action = "regist_Action.action";
}
</script>
表单二

<table>
<!-- theme="simple"为格式控制 -->
<s:form theme="simple">
<tr><td><s:textfield name="username"></s:textfield></td></tr>
<tr><td><s:textfield name="password"></s:textfield></td></tr>
<tr align="right">
<td><s:submit action="login_Action" key="login"></s:submit></td>
<td><s:submit action="regist_Action" key="regist"></s:submit></td>
</tr>
</s:form>
</table>

谢谢了~~~

8 个解决方案

#1


  一个写成from里面,另外的用js提交不就解决了

#2


form name 和 action 为参数用js提交

#3


谢谢两位
按功能来说,第一个完全可以满足了.
现在是学习,想试试多种写法,想知道在<s:form>下,可不可以不用js实现一个<s:form>的提交对应二个甚至是多个action?如果可以,请问怎么弄?
^_^

#4


问题已经解决.
参数了struts 2.1.6下的一个例子.
修改<s:form>如下即可

<s:form action="login_Action" theme="simple">
<tr><td><s:textfield key="username"></s:textfield></td></tr>
<tr><td><s:textfield key="password"></s:textfield></td></tr>
<tr align="right">
<td><s:submit key="login"></s:submit></td>
<td><s:submit action="regist_Action" key="regist" nclick="form.onsubmit=null"></s:submit></td>
</tr>
</s:form>

#5


nclick少了一个"o"
应该是:onclick
^_^

#6


当然可以了阿
你可以用action!method的形式提交阿
想多少个都可以

#7


你看这样如何:
1、Struts.xml
  在一个Action里指定多个方法,一个叫login,一个叫regist

  <package name="example" extends="struts-default">
    <action name="xxxAction" class="struts2.disp.action.XxxAction" method="login">
      <result name="success">/pages/xxxAction.jsp</result>
    </action>
    <action name="xxxAction" class="struts2.disp.action.XxxAction" method="regist">
      <result name="success">/pages/xxxAction.jsp</result>
    </action>
  </package>


2、XxxAction.java
  在该Action中添加两个方法,一个叫login(),一个叫regist()

  public class XxxAction extends ActionSupport {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -329397793534071671L;
    
    /**
     * 用户名
     */
    private String username;
    
    /**
     * 密码
      */
    private String password;

    /**
     * 这里处理点击“登录”按钮的业务
     * @return
     * @throws Exception
     */
    public String login() throws Exception {
        
        System.out.println("用户登录");
        
        return SUCCESS;
    }
    
    /**
     * 这里处理点击“注册按钮的业务”
     * @return
     * @throws Exception
     */
    public String regist() throws Exception {
        
        System.out.println("用户注册");
        
        return SUCCESS;
    }

    /**
     * 以下是Getter、Setter方法,略……
     */

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}


3、JSP页面
   这里为submit按钮指定method属性,即分别为Action中的方法login、regist

  <s:form action="example/xxxAction.action" method="post" >
  <table>
    <tbody>
      <tr>
        <td>
          <s:textfield name="username" label="用户名" />
        </td>
      </tr>
      <tr>
        <td>
          <s:password name="password" label="密码" />
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <s:submit name="submitBtn" value="登录" method="login"/>
          <s:submit name="submitBtn" value="注册" method="regist"/>
        </td>
      </tr>
    </tbody>
  </table>
</s:form>

#8



<s:submit name="submitBtn" value="登录" method="login"/>
<s:submit name="submitBtn" value="注册" method="regist"/>
这个好.不过 login会出错
换成login就好了呀.

可惜已经结贴了....
嘿嘿.谢谢~~~

#1


  一个写成from里面,另外的用js提交不就解决了

#2


form name 和 action 为参数用js提交

#3


谢谢两位
按功能来说,第一个完全可以满足了.
现在是学习,想试试多种写法,想知道在<s:form>下,可不可以不用js实现一个<s:form>的提交对应二个甚至是多个action?如果可以,请问怎么弄?
^_^

#4


问题已经解决.
参数了struts 2.1.6下的一个例子.
修改<s:form>如下即可

<s:form action="login_Action" theme="simple">
<tr><td><s:textfield key="username"></s:textfield></td></tr>
<tr><td><s:textfield key="password"></s:textfield></td></tr>
<tr align="right">
<td><s:submit key="login"></s:submit></td>
<td><s:submit action="regist_Action" key="regist" nclick="form.onsubmit=null"></s:submit></td>
</tr>
</s:form>

#5


nclick少了一个"o"
应该是:onclick
^_^

#6


当然可以了阿
你可以用action!method的形式提交阿
想多少个都可以

#7


你看这样如何:
1、Struts.xml
  在一个Action里指定多个方法,一个叫login,一个叫regist

  <package name="example" extends="struts-default">
    <action name="xxxAction" class="struts2.disp.action.XxxAction" method="login">
      <result name="success">/pages/xxxAction.jsp</result>
    </action>
    <action name="xxxAction" class="struts2.disp.action.XxxAction" method="regist">
      <result name="success">/pages/xxxAction.jsp</result>
    </action>
  </package>


2、XxxAction.java
  在该Action中添加两个方法,一个叫login(),一个叫regist()

  public class XxxAction extends ActionSupport {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -329397793534071671L;
    
    /**
     * 用户名
     */
    private String username;
    
    /**
     * 密码
      */
    private String password;

    /**
     * 这里处理点击“登录”按钮的业务
     * @return
     * @throws Exception
     */
    public String login() throws Exception {
        
        System.out.println("用户登录");
        
        return SUCCESS;
    }
    
    /**
     * 这里处理点击“注册按钮的业务”
     * @return
     * @throws Exception
     */
    public String regist() throws Exception {
        
        System.out.println("用户注册");
        
        return SUCCESS;
    }

    /**
     * 以下是Getter、Setter方法,略……
     */

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}


3、JSP页面
   这里为submit按钮指定method属性,即分别为Action中的方法login、regist

  <s:form action="example/xxxAction.action" method="post" >
  <table>
    <tbody>
      <tr>
        <td>
          <s:textfield name="username" label="用户名" />
        </td>
      </tr>
      <tr>
        <td>
          <s:password name="password" label="密码" />
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <s:submit name="submitBtn" value="登录" method="login"/>
          <s:submit name="submitBtn" value="注册" method="regist"/>
        </td>
      </tr>
    </tbody>
  </table>
</s:form>

#8



<s:submit name="submitBtn" value="登录" method="login"/>
<s:submit name="submitBtn" value="注册" method="regist"/>
这个好.不过 login会出错
换成login就好了呀.

可惜已经结贴了....
嘿嘿.谢谢~~~