问题:更新数据库操作时出错 org.hibernate.TransientObjectException: The given object has a null identifier: domain.UserAccount
原因:ID没有传进去,去DAO方法中调用时发现没有ID,ID为null. 因为在JSP
<input type="text" id="userId" name="u_id" value="${user_acc.id}" disabled="disabled"/> 中使用了disabled="disabled",这样可以使文本框不能编辑,但form不能读取其中的值;
解决办法:改为“readonly="readonly"”,这样可以使用文本框不能编辑,也可以使用form传值。
参考资料:
相同点:
1、 readonly是要锁定这个控件,通过在界面上无法修改他(但是通过javascript可以修改他)。
2、disabled 和readonly有相同的地方也是可以锁定这个控件用户不能改变他的值,但是disabled的更彻底一些,他是要使你完全不能使用他,包括改变他的背景颜色(不信,你去修改一个被disabled掉的input文本框,你发现你是徒劳),如果是checkbox则不能选中他。
区别:
1、客户端设置readonly,disabled和服务器端设置readonly效果一样。
2、readonly的数据是可以提交到服务器的,disabled的数据是不可以提交到服务器的。