2017-01-19 60 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