详情  修改  删除  分配角色         登录上来之后 点击修改,操作无异常,也可以修改,跳转页面都很正常,但是修完完之后,又点击详情,查看用户详情的操作,就不能修改了。还报这个异常:
2011-03-22 11:21:26,984 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] - Error setting expression 'emp.id' with value '[Ljava.lang.String;@264dd8'
ognl.OgnlException: target is null for setProperty(null, "id", [Ljava.lang.String;@264dd8)        /**
 * 跳到要修改详情的页面
 * @return
 * @throws Exception
 */
public String toUpdate()throws Exception{
this.emp = this.employeeService.getEmployee(emp.getId());

List<Department> depts = this.departmentService.getDepts();
List<Position> posts = this.positionService.getPosts();

put2ActionContext("depts", depts);
put2ActionContext("posts", posts);

return TO_UPDATE;
}

/**
 * 修改详情
 * @return
 * @throws Exception
 */
public String update() throws Exception{
Employee real = this.employeeService.getEmployee(this.emp.getId());
real.setName(emp.getName());
real.setEmail(emp.getEmail());
real.setAddress(emp.getAddress());
real.setBirthday(emp.getBirthday());
real.setDepartment(emp.getDepartment());
real.setPositions(emp.getPositions());
real.setFphone(emp.getFphone());
real.setMobile(emp.getMobile());
real.setQQ(emp.getQQ());
real.setMSN(emp.getMSN());
real.setRe(emp.getRe());
real.setRole(emp.getRole());
real.setGender(emp.getGender());
real.setJobnumber(emp.getJobnumber());
real.setEntry(emp.getEntry());
real.setDeparture(emp.getDeparture());
real.setOrigin(emp.getOrigin());
real.setTelephone(emp.getTelephone());

this.employeeService.updateEmployee(real);

this.result = "success";
return SUCCESS;

}struts2.xml 这样的配置
                <package name="empMng" namespace="/emp" extends="my-default">
<action name="*" class="com.make.web.controller.EmployeeAction" method="{1}">
          <result name="toupdate">/emp/empUpdate.jsp</result>

<result name="success" type="json">
<param name="root">result</param>
</result>
</action>
</package> 

解决方案 »

  1.   

    ognl 表达式的错误,是jsp页面错误
      

  2.   

      你的详情页面中有没有name为Id属性的元素!没有的话、你的Action是取不到GetId的值的。看看
    com.opensymphony.xwork2.ognl.OgnlValueStack 你的xwork2报错了不是!
    target is null for setProperty(null, "id", [Ljava.lang.String;@264dd8)
      目标是空的~~~说明你的“Id”字段取不到值。
    在你的详情页面中加入一个name为Id的元素(就是与你Action对应的那个)、在看看!当然记得把value给设置上去!
      

  3.   

    汗~~~才刚刚回答完就这么多帖子上来了!
       你的emp.id能跟你的Action中的属性对应不?
      

  4.   

    请教一下:你在页面中这样定义元素、Action中的属性你是怎么定义的?
              
      

  5.   

    登录上来之后 点击修改,操作无异常,也可以修改,跳转页面都很正常,但是修完完之后,又点击详情,查看用户详情的操作,就不能修改了。还报这个异常:
    你修改完之后,此时你的emp.id为空了,你检查下你的emp.id是否为空??哪里没有设置值
      

  6.   

    跟这有什么关系啊?此时隐形表单域的 emp。id 没为空
      

  7.   

    能不能看一下你的Action  及    emp  bean封装的 字段 可以吧
      

  8.   

    this.emp.getId()  第一次修改。这个id有值。第二次再修改,你看看你的数据库中修改的 (id) 是不是正确的修改了。主要是关键字段有没有出错.像  id  对应的正不正确。认真检查一下。
      

  9.   

    2011-03-23 10:03:39,859 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] - Error setting expression 'emp.id' with value '[Ljava.lang.String;@98d70d'
    ognl.OgnlException: target is null for setProperty(null, "id", [Ljava.lang.String;@98d70d)
      

  10.   

    我遇到这个问题的时候,调试中发现那个对象始终为null。
    于是就修改了那个对象的set函数名,然后就OK了~