百度,谷歌了很久了,问题还是没有解决,代码看起来没有什么问题就是后台接收不了选中的值,望高手解惑!!!
ftl页面:
<@s.form theme="simple" action="NewMessage">
<@s.bean name="oa.action.messageManage.userTag" id="usersList" />
类userTag:
public class userTag {
private List users;
public userTag(){
}
public List getUsers(){
List users = null;
UserDAO ud = new UserDAO();
Session s = ud.getSession();
Transaction ts = s.beginTransaction();
users = ud.findAll();
ts.commit();
s.close();
User u = new User(1000, "所有人");
users.add(u);
this.setUsers(users);
return this.users;
}
public void setUsers(List users){
this.users = users;
}
}
Action类 NewMessage :
public class NewMessage extends ActionSupport{
private Integer[] usersGet;
private String content;
private String newMessageMsg;
private static final Log log = LogFactory.getLog(NewMessage.class);
.......
//get方法和set方法
。。。。。。。
}
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException 。。。。。。。
at oa.action.messageManage.NewMessage.sentMessages(NewMessage.java:74)——————在这一行有一个for循环使用了this.usersGet所以报错
usersGet 按理应该可以取得值的啊,可是不知道为什么使用log.debug(.......)来测试发现它的值总是null。何解???
这个问题如何解决????
在Action中把Integer[]的数组的usersGet 先定义成String[] 或者 List
再建立一个usersList的List
保证get 和set有值.
看代码你的应该是没有问题的,但是开发中总会出些意想不到的东西出来.
你先扩大接收值得范围 使用Object对象来接受, 然后确实值是否压到userGet
list="#usersList.users" 改成%{usersList.users}看看
建议先检查标签生成的html代码,确定传的值有没有问题
form submit都贴上来
我是要html代码,生成后的
是不是没有添加checkboxInterceptor这个拦截器?
如果没这个拦截器,你不选的时候,是null,而不是false
在struts2 中 定义一个
private String usersGet;
//set & get
你在提交看看可以取到吗?
提交之后要 要确保是用from 提交
要取userGet ,最好用getparametervalue来取。
OGNL的接值方式无非4种 username,#username,%{username},%{#username}
private Integer[] usersGet;
这个数组,尝试改下,用另外一种方式实现。