我最近在学struts 2,但是,有问题。我有action对应的一个表单,但是,表单中,有一个输入框的数据,是我要传到别的action中,但是,我不知道怎么写。
输入页面JSP代码如下:<struts:form action="Login">
  <struts:label value="登陆系统"></struts:label>
  <struts:textfield name="username" label="账号"  id="username"/>
  <struts:password name="password" label="密码" />
<struts:radio list="#{'manager':'管理员','teacher':'教师','student':'学生'}" name="type" ></struts:radio>
<struts:submit type="button" value="登陆"></struts:submit>
<struts:reset type="button" value="重置"></struts:reset>
</struts:form>
<a href='<struts:url value="ForgetPassword!execute.action"><struts:param name="username"/></struts:url>'>忘记密码</a>我是要把username这个账户,传到 ForgetPassword 这个action中的execute函数,但是,我不知道怎么写那个url。跪求各路大神帮忙。
里面的函数是这样子。
public String execute()
    {
     String username = ServletActionContext.getRequest().getParameter("username");
          if(username.compareTo("1")==0)
     return "resetpassword";
     else
     return null;
    }我希望最好是修改jsp中的语句。

解决方案 »

  1.   

    LZ是不是要把数据传到ForgetPassword这个action中? url直接写这个action名.do或者.action呀。
    然后在ForgetPassword这个Action中接受数据用就行了啊  
    不知道我有没有理解对!
      

  2.   

    2楼的大神,我是想将JSP页面中的一个输入框输入的数据,传到另外一个Action里面,但是参数那里,我不知道怎么写。那个url怎样获得那个输入框的数据。就是那个username的输入框的数据我不知道怎么获得。怎么将url补充完整。
    <a href='<struts:url value="ForgetPassword!execute.action"><struts:param name="username"/></struts:url>'>忘记密码</a>
      

  3.   

    struts2里面,可以在struts.xml里面配置<action>下面<result>的属性type的。就是控制你是如何跳转type是redirectAction,就是可以从Action1跳转到Action2的,而且可以带参数,这个参数就是Action1请求中从页面输入的参数。<result name="success" type="redirectAction">
    <param name="actionName">action2</param>
    <param name="username1">${username}</param>
    <param name="password1">${password}</param>
    <param name="usernameAndPassword1">${usernameAndPassword}</param>
    </result>上面的配置方法里面,username1,password1,usernameAndPassword1是Action2里面定义的那些属性,而后面像EL表达式里面的三个值是Action1里面的三个属性值。你可以参考着试试。
      

  4.   

    通过chain。。或者通过url传值。比如response.sendRedirect("test.action?id=100&name=bill");
    不过推荐使用chain..
      

  5.   

    3L 的大神,那个,JSP页面的<a href="">忘记密码</a> 那个href中的双引号中的内容应该怎么写?
      

  6.   


    3楼正解。
    struts2的表单传值还是很方便的,楼主看一下你的struts书里关于OGNL部分..就知道怎么传入值了。
      

  7.   

    你可以用异步请求 用jq去做把  当你再输入框里面输入完了以后调用jq方法访问另外一个action
    <script type="text/javascript">
       function checkname()
       {
        $.post('checkname.action', {username:$("#uname").val()}, function (data) { $("#msg").html(data)}); 
       }
      </script>     <form action="useraction!regist.action">
        Name:<input type="text" name="name" id="uname"  onblur="checkname()" ><br>
        <input type="text"  id="msg">
        <input type="submit" value="sub">
        </form>
      
    这个就是当你注册时候 填好name以后光标移出这个input以后 会去访问你的checkname.action 并把返回信息输出到id为msg的input中 当然做项目的时候不会用input来显示返回消息  ,
      

  8.   

    看了你的需求 发现我回答的不够充分 不过大体思路是没有错的 现在跟说下方法你自己去写写哦
    你想要的是把login这个form里面的参数传递到ForgetPassword的action中其实这个也简单  做这个我们也得用js去实现,假如我们要把name这个input的值传道ForgetPassword的action中那么 首先你写一个js方法取到name这个input的值赋给一个变量 当你填完时光标移开调用这个js方法。再去构建你的a连接 把刚才那个变量当做参数穿过去就得了
      

  9.   

    楼主的项目中思想有些问题啊
    <a href='<struts:url value="ForgetPassword!execute.action"><struts:param name="username"/></struts:url>'>忘记密码</a>
    这里应该是跳转到一个页面,然后再输入用户名(我见过的网站从来就没有您所说的这种功能)
      

  10.   

    各路大神,那个输入框的数据,我能取到了。但是,现在,我还要去一个单选框的数据,我不知道怎么办。
    单选框的代码如下:
    <struts:radio  list="#{'student':'学生','teacher':'教师','manager':'管理员'}" name="type" id="type" ></struts:radio>
    我的输入框的数据使用JS获得的。现在,我想根据用户选择的类型,取得type的数据。
    下面是我的JS的函数代码。但是,我一直不能获得type的数据,或者,获得的数据,永远是student,我不知道怎么修改下面的函数,跪求各路大神帮忙。
    function forgetpassword()
    {
      var a = document.getElementById("username").value;
      if(a=="" || a==null)
      {
        alert("用户名不能为空");
      }
      else
    {
      var b = document.getElementById("type");
      for(i=0;i<b.length;i++){if(b[i].checked){break}};
      if(i==b.length)
      {
        alert("用户类型不能为空");
      }
      else
      {
        window.location.href="ForgetPassword!execute.action?username="+document.getElementById("username").value + "&type=" + document.getElementById("type")[i].value;
      }
    }
    }
      

  11.   

    radio可以设置一个隐藏域,绑定一个事件,选择一次,让它去把radio的值放到隐藏域中;不知道你明白没
      

  12.   


    但是,我不止要选中的radio作为链接的参数,传到ForgetPasswordAction里面,还要选中的radio能传到 LoginAction 里面,作为一个表单的值。ForgetPasswordAction里面有这句话:String type = ServletActionContext.getRequest().getParameter("type");但是,我一直不知道怎么弄。
      

  13.   

    radio的值,你直接String type = ServletActionContext.getRequest().getParameter("type");
    就可以取到,取到的值,就是你选中的,你试了吗?