现在真的很好,网络也可以给让你养成一个良好的学习习惯-对每天每个阶段的学习进行一个总结。而且一目了然,今后什么时候用到了就可以翻出来看看。 只恨高中时没这个条件啊...哈哈哈
好吧...开始..
今天中午吃饭前(如有雷同纯属巧合哈,因为我看到有一个网友也是这样的)把ssh2整合第一个程序运行起来。当时只实现了插入的操作,没发现jar包中少了antlr 的jar包。实现数据库查询时就出现了异常,上网一看(菜鸟的我也只能这样了)狂搜了一番之后发现是少了antlr的jar包--语法解析专用包。不然DAO层中的hql语句就不能执行了。这是框架版本之间上的问题,有些版本的jar包集中包含了antlr包。
然后就是struts2中的验证问题了
有两种方法 一:用代码的方式在action的validator()方法中进行验证
二:用struts2的验证框架
而struts2的验证框架处理方法又有两种:
1:<actionName>-validation.xml
2:<BeanName-contextName>-validation.xml
两种的处理方法差不多,第二种是以visitor的方式验证的。还有一点在spring applicationContext.xml中的将service bean的scope设置为prototype
这是因为struts2是有状态的,而struts1是无状态的。
//第一种
//<ActionName>-validation.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="uer.firstname">
<field-validator type="requiredstring">
<message>firstname required</message>
</field-validator>
</field>
<field name="user.lastname">
<field-validator type="requiredstring">
<message>lastname required</message>
</field-validator>
</field>
<field name="user.age">
<field-validator type="required">
<message>age required</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age should between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
//第二种
//<ActionName>-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user">
<field-validator type="visitor">
<param name="context">user</param>
<param name="appendPrefix">true</param>
<message>user's</message>
</field-validator>
</field>
</validators>
//<beanName-contextName>-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="firstname">
<field-validator type="requiredstring">
<message>firstname required</message>
</field-validator>
</field>
<field name="lastname">
<field-validator type="requiredstring">
<message>lastname required</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>age required</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age should between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
这个过程中曾遇到这样一个问题。尽管验证框架搭建好了,但是程序运行时,就是不进行验证。错误的信息还是通过了。(经网上的高人指点)这样的情况主要有三种情况
1:命名是否严格按照要求进行
2:xxxx-validation.xml中的信息是否完全正确(我遇到的问题就是没完全正确的写对信息--少了两个字母)
3:信息中的filed中的name与其他相关地方的name得对应起来。
经过这三道工序的检查,应该是不会有问题了。
最后总结的经验,也是高人说的,真是一语惊醒梦中人,就是当我们遇到问题的时候,不慌,先尽量按照思路检查一遍,甚至更多遍。别一上来就对着问题上网一阵狂搜。最后问题解决了,原来就是自己的疏忽。浪费了很多时间。