java.lang.NullPointerException,Strut2标签取对象出错
<s:form action="manage_saveorupdate" namespace="/room" method="get"> <s:hidden name="room.room_id"/> 宿舍区域:<s:select list="#request.dareas" listKey="d_area_id" listValue="d_area_name" name="room.darea.d_area_id" /> <br /> 楼号:<s:textfield name="room.building_no" /> <input type="submit" value="保存" /> </s:form>
action.java
Java code?public String saveorupdate() { try { if (room.getRoom_id() == null || room.getRoom_id().equals("")) { room.setRoom_id(-1); } System.out.println(room); roomService.update(room); ActionContext.getContext().put("message", "保存成功"); } catch (Exception e) { ActionContext.getContext().put("message", "e"); } finally { return "message"; } }
XML:
Plain Text code?123 <id type="integer" name="room_id" column="room_id"><generator class="identity" /></id> <many-to-one name="darea" column="d_area_id" class="Darea"></many-to-one> <property name="building_no" type="string" length="200" column="building_no" />
报错:java.lang.NullPointerException
通过将room.darea.d_area_id部分改成d_area_id action.java加setget可以编译通过,有没有办法不改变该name?简单的办法,小虾米求解。改了之后又无法自动修改了。求解?
这句话的意思是room.darea.d_area_id 对象room.getDarea().getD_area_id() 看看是不是对象都有,get方法都有
loveyuyan提醒了我,谢谢。
room.darea.d_area_id 我目前没找到办法获取。查了下文档貌似都没有例子。SSH2宝典里有关的说法貌似是不能获取。
不纠结多重获取了.....
不过可以通过把d_area_id值放在action.java中的updateUI方法里完成下拉列表的默认值设置。
Plain Text code?1 <s:select list="#request.dareas" listKey="d_area_id" listValue="d_area_name" name="d_area_id" />
Plain Text code?1234 public String updateUI() { d_area_id=room.getRoomusage().getR_u_id(); }