2017-01-19 24 views
2

这里是我的动作类:无法获得支柱查询字符串PARAMS 2 action类

public class ForgotPassword extends ActionSupport{ 

    private String j_username; 

    public String execute() throws Exception { 
     System.out.println("FORGOT PASSWORD ACTION CALLED"); 
     return SUCCESS; 
    } 

    public String getUsername() { 
     return j_username; 
    } 

    public void setUsername(String j_username) { 
     System.out.println("Username received is " + j_username); 
     this.j_username = j_username; 
    } 
} 

我在struts.xml中声明的缺省拦截器,其中包括:

<interceptor-ref name="params"> 
    <param name="excludeParams">dojo\..*</param> 
</interceptor-ref> 

从HTML页面我我正在发送参数到像这样的行动类:

<body> 
    <input type="text" id="j_username" name="j_username"/> 

    <div style="margin-top:20px"> 
     <a class="forgot_password" 
      onclick="forgotPassword()" id="resetAnchor">Forgot Password</a>  
    </div> 

    <script type="text/javascript"> 
     function forgotPassword() { 
      var ctx = '${pageContext.request.contextPath}'; 
      var username = document.getElementById('j_username').value; 
      if (username !== null && username !== "") { 
       var username = document.getElementById('j_username').value; 
       console.log('username is ', username); 
       document.getElementById('resetAnchor').href = ctx + "/forgotPassword?j_username=" + username; 
      } else { 
       alert('please provider username'); 
      } 
     } 
    </script> 
</body> 

一切看起来不错,但我无法打印此行

System.out.println("Username received is " + j_username); 

只会打印该行::System.out.println("FORGOT PASSWORD ACTION CALLED");

这里是struts.xml中定义的操作:

<action name="forgotPassword" class="com.actions.ForgotPassword"> 
    <interceptor-ref name="params"/> 
    <result name="success">/reset.jsp</result> 
</action> 

什么我我错过了侧setter方法?

+0

没有你提到的动作名称是'/ forgotPassword'中的struts.xml文件。 – Poornima

+0

@Poornima页面重定向,以便意味着它返回的'成功' – kittu

+0

更改变量名称作为用户名在HTML页面和行动类 – Poornima

回答

1
public String getJ_username() { 
    return j_username; 
} 
public void setJ_username(String j_username) { 
    System.out.println("Username received is " + j_username); 
    this.j_username = j_username; 
} 

只需更改您的settergetter方法。因为它读取方法。不是变量名称。

+0

没问题先生。如果我的回答是对的。你可以检查一下。 – msagala25

1

我认为问题在于setter/getter方法。

你可以试试这个。

public String getJ_username() { 

     return j_username; 
    } 

    public void setJ_username(String j_username) { 

     this.j_username = j_username; 
    } 

为了避免这样的错误,我建议使用IDE帮助,而不是自己创建setter/getter方法。

如果您使用的是Eclipse您可以按照以下步骤操作。

  1. RightCLick变量你想要生成setter/getter方法。
  2. 来源==>生成getter和setter ...
  3. 检查Seter和getter复选框,单击OK

第一步 Step1

第二步

Step2