日期:2014-05-19  浏览次数:20801 次

关于ognl.OgnlException: target is null for setProperty的问题
本帖最后由 blazecheng 于 2012-11-26 10:19:30 编辑 今晚出现了这个问题,到处找解决办法就是解决不了,现在这里求助于各位。

ognl.OgnlException: target is null for setProperty(null, "userGender", [Ljava.lang.String;@155e508)
。。。
[framework] 2012-11-25 23:02:40,409 - com.opensymphony.xwork2.ognl.OgnlValueStack -20302 [http-8080-1] WARN  com.opensymphony.xwork2.ognl.OgnlValueStack  - Error setting expression 'userinfo.userNickname' with value '[Ljava.lang.String;@2f8c99'
ognl.OgnlException: target is null for setProperty(null, "userNickname", [Ljava.lang.String;@2f8c99)
。。。

action中:
public class UserManageAction extends ActionSupport{
private @Resource Userinfo userinfo;
private @Resource IUserinfoDAO userinfoDAO;
        public String edit(){
userinfo=userinfoDAO.findById(userinfo.getUserId());
return SUCCESS;
}
        public String update(){
System.out.println(userinfo.getUserId());
userinfoDAO.merge(userinfo);
return SUCCESS;
}
        public void setUserinfo(Userinfo userinfo) {
this.userinfo = userinfo;
}
public Userinfo getUserinfo() {
return userinfo;
}

我的页面里面的数据是通过edit方法得到的,并且在页面里面显示正常,但很当我点击修改的时候,update里面的System.out.println(userinfo.getUserId());语句都还没执行到就出现了那些异常信息。

我打算只能修改用户名和性别,其他的不能修改,但是提示异常的恰恰是这两个可以修改的字段。对了,页面里面显示出来的并不是整张表的全部字段,但是我是用<s:hidden>标签把剩余的字段也放进去的时候,异常提示就会把他们也同样提示出来。
页面中:

 <s:form name="update" action="update" namespace="/userManege" method="post">
    <table>
    <tr>
        <td>用户编号:</td>
        <td ><s:textfield name="userinfo.userId" disabled="true"/></td>
      </tr>
      <tr>
        <td>用户名:</td>
        <td ><s:textfield name="userinfo.userName" disabled="true"/></td>
      </tr>
      <tr>
        <td>昵称:</td>
        <td ><s:textfield name="userinfo.userNickname" /></td>
      </tr>
      <tr>
        <td>性别:</td>
        <td colspan="4">
         <s:radio list="#{true:'男',false:'女'}" name="userinfo.userGender" ></s:radio>
        </td>
      </tr>
      <tr>
        <td>电子邮箱:</td>
        <td ><s:textfield name="userinfo