struts2,action里面获取不了jsp页面中的值

使用jsp作为页面:
<s:form name='form1' id='form1' method='get' action='testAction'>
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
对应的action:
private String username;
private String password;
两个属性都有get和set方法,在execute()方法里:
System.out.println("username:"+username);
System.out.println("password:"+password);
发现打印的值是null。
不是有setter方法就能给action里的属性赋值吗?为什么是null?求高手解答!!
public String getUsername() {
System.out.println("调用username 的getter方法");
return username;
}

public void setUsername(String username) {
this.username = username;
System.out.println("调用 username 的setter方法");
}

public String getPassword() {
System.out.println("调用password的getter方法");
return password;
}

public void setPassword(String password) {
this.password = password;
System.out.println("调用password的setter方法");
}

是你form表没有对应到你的class类里,应该改为user.username,user.password,然后后台通过声明user类给予get和set方法才能得到你要的追问

我的action类叫MyAction,属性是:private String username; private String password;
你的意思是

这样?

追答

你这样是页面的处理,还有后台的Action处理类需要写private MyAction myAction和相应的get与set
这样就可以直接用myActiond.getUsername调用,
如果你的Action处理就在MyAction中,那就没必要这么写。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-16
你确定进了action了吗?里面是set不是setter。例如id:
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
你看看是不是你大小写错了?set里面一定要是this.username = username this.password=password

别写错了哦。可以用工具生成的,那就不会错的。追问

帖出来了,没写错啊

第2个回答  2013-07-16
你看看是不是set写错了,或者字段名不统一,最好复制下追问

代码贴出来了,没写错啊

第3个回答  2013-07-16
把get和set方法贴出来看看,问题应该在这几个方法上导致没法设置值追问

贴出来了,麻烦帮忙看看

追答

这个地方的action地址是不是有问题啊,你struts的拦截后缀配的是什么啊,如果是“action”的话那么这里的action属性应该写成“testAction.action”,整个应该写成如下:

ps:我用你的代码试过了,我这边是正确的

相似回答