ognl获取user.roles[0].roleId报错!!!,user里面有集合roles,想通过user访问roles[0]的roleId,却报错!!!package com.zjlolife.test1.domain;import java.util.List;public class User { private String id;

private String name;

private List<Role> roles; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Role> getRoles() {
return roles;
} public void setRoles(List<Role> roles) {
this.roles = roles;
}



}package com.zjlolife.test1.domain;public class Role { private String roleId;

private String name; public String getRoleId() {
return roleId;
} public void setRoleId(String roleId) {
this.roleId = roleId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}

}package com.zjlolife.test1.action;import com.zjlolife.test1.domain.User;public class FormAction { private User user;


public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() {
System.out.println(user.getRoles().get(0).getRoleId());
return "success";
}
}
错误信息:
ognl.OgnlException: source is null for getProperty(null, "roles")
如果是roles[0],roleId那就好访问了,但是下面的这种user.roles[0].roleId还是会报错啊
不知道如何访问user.roles[0].roleId,大家帮忙看下,格式应该如何写?

解决方案 »

  1.   

    你在execute方法里都没传数据到前台  肯定包空指针了
      

  2.   


    前台有个input.jsp:
    <form action="formPro" method="post">
             <input  name="user.roles[0].roleId" value="1001" type="checkbox" />
             <input type="submit" value="测试">
          </form>
    再看下如何写格式?
      

  3.   

    应该不能这么写吧  这种复杂的数据结构一般都用json传比较好
      

  4.   

    不会把,这种需求应该很多的,人家struts2也不至于这么菜吧
      

  5.   

    struts标签里有iterater  一般都是通过这种方法遍历获取里面的值
      

  6.   

    举个例子 比如name="user.name"  struts传参的时候是在先在action里实例化user 然后调用user的setName方法赋值,而name="user.roles[0].roleId" 必须先在action中实例化user 再在user中实例化roles(而这个应该是struts没法做到的)
      

  7.   

    那只能说ognl并没有那么强大啊
      

  8.   

    你还是debug一下,看你的action中传过来!
      

  9.   

    不好意思,浪费大家时间了,debug一下好了,应该是当时部署的时候没重新发布。
    可以访问的,ognl依然强大。。