无法在 struts 2 操作 class 中获取查询字符串参数
Unable to get query string params in struts 2 action class
这是我的操作class:
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 页面我发送参数到操作 class 像这样:
<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>
一切看起来都很好,但我无法在 setter 方法中打印这一行:
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>
我错过了什么?
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;
}
只需更改您的 setter
和 getter
方法。因为它读取了方法。不是变量名。
我认为问题出在 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,您可以按照以下步骤操作。
- 右键单击要生成 setter/getter 方法的变量。
- Source ==> 生成 Getters 和 Setter...
- 选中设置器和 Getter 复选框单击
OK
。
步骤 1
步骤2
这是我的操作class:
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 页面我发送参数到操作 class 像这样:
<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>
一切看起来都很好,但我无法在 setter 方法中打印这一行:
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>
我错过了什么?
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;
}
只需更改您的 setter
和 getter
方法。因为它读取了方法。不是变量名。
我认为问题出在 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,您可以按照以下步骤操作。
- 右键单击要生成 setter/getter 方法的变量。
- Source ==> 生成 Getters 和 Setter...
- 选中设置器和 Getter 复选框单击
OK
。
步骤 1
步骤2