问题描述
我在试图层中我写了这些代码<html:formaction="users.do"><html:hiddenproperty="op"value="doUpdate"/>${sysUserForm.item.usrName}: <html:selectproperty="item.role.roleId"><html:optionvalue="1">--未分配--</html:option><html:optionsCollectionname="list_role"label="roleName"value="roleId"/></html:select> <html:submit></html:submit></html:form>我在逻辑层中这样处理:publicActionForwarddoUpdate(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){SysUserFormuserForm=(SysUserForm)form;if(userForm.getItem().getRole().getRoleId()==1){userForm.getItem().setRole(null);}usersBiz.updateUser(userForm.getItem());returnmapping.findForward("userInfo");}但是:出现这样一个错误:org.apache.commons.beanutils.NestedNullException:Nullpropertyvaluefor'role'这是为什么???可能原因是:这个userForm.getItem().setRole(null);被我赋值为空了。我是通过hibernate把数据进行了一个懒惰加载“lazy='false'”.我这样去解决过:userForm.getItem().setRole(newSysRole());也不行,为什么??但是怎么解决呢???急求....谢谢了
解决方案
解决方案二:
if(null!=userForm.getItem().getRole()&&userForm.getItem().getRole().getRoleId()==1){userForm.getItem().setRole(null);}
解决方案三:
引用1楼luman2002的回复:
if(null!=userForm.getItem().getRole()&&userForm.getItem().getRole().getRoleId()==1){userForm.getItem().setRole(null);}
我出错的原因是:当我在该对象为空的时候,页面上的标签会报错。说<html:selectproperty="item.role.roleId">这个里面的role找不到。解决一下。谢谢....
解决方案四:
<html:optionsCollectionname="list_role"label="roleName"value="roleId"/>不应该直接写成value="roleId"吧
解决方案五:
引用3楼lovemichael2的回复:
<html:optionsCollectionname="list_role"label="roleName"value="roleId"/>不应该直接写成value="roleId"吧
呵呵,这样写,绝对是对的!问题的根本不是这个?
解决方案六:
问题是在你的userForm里没有取到值啊!断点跟进去getRole那边看看
解决方案七:
该回复于2011-04-19 15:05:16被版主删除
解决方案八:
<html:selectproperty="item.role.roleId">你这里的item应该是空的。