1. 郁闷的Form表单问题,请看下面代码:
xml 代码
-
<form name="form1" action="userCRUDAction!editUser.action?user.id=${user.id}">
这真已经是一个再简单不过的Struts2的表单提交了,不过运行后,你会发现user.id=null。 为什么? 你现在试试把代码换成以下就好了。
xml 代码
-
<form name="form1" action="userCRUDAction!editUser.action?user.id=${user.id}" method="post">
或者:
xml 代码
-
<form name="form1" action="userCRUDAction!editUser.action">
-
<input type="hidden" name="user.id" value="${user.id}" />
原因看出来了吧,重点就是这个 method="post", Form默认的传输是GET,你得养成好习惯记得在每写一个FORM的时候,就给加上。
2. 吓出一身冷汗的Spring scope问题。
天天Struts2,Webwork,Spring,Hibernate挂在嘴边,结果一用的时候才真正明白,真正懂这几个框架的人真的非常非常少。更别去谈成功的项目了。
以下代码在任何SSH框架的项目里是太平常的我都不愿意写了:
java 代码
-
public class UserController extends ActionSupport {
-
-
private static final long serialVersionUID = 1L;
-
-
private static Logger logger = Logger.getLogger(BaseController.class);
-
-
private IUserService userService;
-
-
private User user;
-
private Date createDate;
-
-
..................
然后把 userService 注入:
xml 代码
-
<bean id="userCRUD" class="com.libe.controller.UserController">
-
<property name="userService" ref="userService" />
-
</bean>
代码单元测试也通过了,社会和谐了,呵呵。可是一放到服务器上,开始出莫名奇妙的问题了,测试人员不停的提交那些根本不可能出现的问题,好吧。开断点,看着断点也吓出一身冷汗:许多本应该为null的对象,竟然都有值了!@##¥%。
代码查了又查看了又看,终于又回到这个XML配置片断了,修改成如下:
xml 代码
-
<bean id="userCRUD" class="com.libe.controller.UserController"
-
scope="prototype">
-
<property name="userService" ref="userService" />
-
</bean>
就是加了一个 scope="prototype"。 然后回头看看项目,几十个Action竟然都没有加,汗,测试员提出的问题应该和这个有关,大家都知道Spring的默认设置为:singleton,Spring的容器只维护该类的一个实例感觉应该和启动后,Tocmat加载的Servlet挺相似。如果这个时候Action设置成了singleton,大家可以试着想像一下在那个Action里的 user, createDate,等等其它私有属性在那几个测试员的交差点击下,会出现多么混乱的情况。
3.Hibernate的滥用:
我一直承认自己的Hibernate用的不好,所以更多的时候是在测试,以达到最佳实践。从最开始对Hibernate的疯狂吹捧,再到将Hibernate项目转成JDBC项目之痛,到现在反复看文档做测试尽可能客观的来对待Hibernate,已经有一年多了。
我这个项目其实根本不适合使用Hibernate
1.从一开始就不是按照对象建模再建表,对象建立都是跟表走。
2.表结构冗余非常严重,一般通过关联取的信息已经在主控表里了。
3.用着最新的Hibernate却当Hibernate2.1使用,那些什么lazy, cache, proxy, out-join全部都不管,这也是让我最郁闷的一点,lazy=false,你就等着Hibernate给你刷屏吧。
想改变这一切,可是我来的有点晚,项目已经做了一大半了,要全部设计的话似乎已经不可能了。
分享到:
相关推荐
### 个人快捷键整理,经验之谈! 在日常的计算机操作过程中,我们往往过于依赖鼠标,而忽视了键盘快捷键的强大功能。事实上,熟练掌握并运用快捷键不仅可以提高工作效率,还能减少手部疲劳,使我们的电脑操作更加...
关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载ImageNet等大型数据集的经验之谈,以及代码 关于下载全自动下载...
项目管理经验之谈.docx
主要讲述开电脑维修店的一些注意事项和经验之谈,希望对已开或将要开店的朋友有所帮助!
在电子设计领域,PCB(Printed Circuit Board)设计是一项至关重要的工作,它涉及到电路板上元器件的布局、走线、电源分配等多方面内容。PADS是一款广泛使用的PCB设计软件,以其强大的功能和易用性深受工程师喜爱。...
PCB布线的经验之谈,学好Protel的很好的资料
### 电子工程师的经验之谈 #### 工程师的角色与素养 工程师不仅是科学家和技术实践者,更是艺术家和思想家。他们运用自然科学原理创造出既实用又美观的作品。在电子工程领域,这种结合尤为明显。杰出的电子工程师...
北大国际政治考研经验之谈.docx
北大国际政治考研经验之谈.doc
学习Excel函数公式经验之谈.docx
"一个电子工程师的经验之谈"这份资料,无疑为有志于此行业的学生提供了一份宝贵的指南。它可能涵盖了电子工程师在职业生涯中遇到的各种挑战,以及如何克服这些困难,从而积累宝贵经验的故事。 首先,这位工程师可能...
【div+css经验之谈】 在网页设计领域,Div+CSS是构建网页布局的重要技术,它使得页面结构清晰,样式独立,便于维护和优化。本文档主要基于实践经验和实际工作中的应用,为初学者提供了一个深入理解div+css的基础。 ...
经验之谈:如何顺利实现adams和simulink的联合仿真
一位资深司长的经验之谈.docx
网管经验之谈局域网维护优化技巧.pdf
EMC和EMI测试实践经验之谈.pdf