Account类:
private Role role;
private UDepartment uDepartment;private UMajor uMajor;
private UClass uClass;
Action中:
private Account account; //并设置setget方法,省略
在前台进行数据封装到Action的account类中时,
<input type="text" name="account.role.id" value="1">
<input type="text" name="account.uDepartment.id" value="2">
<input type="text" name="account.uMajor.id" value="3">
<input type="text" name="account.uClass.id" value="4">
只有role对象存在,且其id为1,其余account中的uDepartment,uMajor,uClass的值都为null。
也就是说,只有role是封装成功的,其余的都不成功。
造成该现象的原因在于:
uDepartment这个对象名,第一个字符是小写的,而第二个字符是大写的,封装数据时,struts会去查set方法,自动将第一个字符大写,也就是说,它查的是setUDepartment方法,而在Account实体类中,自动生成的set方法是setuDepartment方法,差了一个u字母,所以,数据无法封装进去。同理,uMajor和uClass都无法进行封装。
而role,struts2查的是setRole方法,Account实体类中,自动生成的也是setRole方法,所以,数据可以封装进去。