我使用的是ActionName-validation.xml文件校验。可是验证总是在第一次有效。
查阅了资料以后发现,这和我们搭建的SSH环境有关。上面问题出现的原因是因为每次访问到了同一个Action对象。本来struts基于每次访问会
创建新的Action对象。可是当把objectFactory交由spring管理以后,spring默认是创建的单例,也就是singleton,所以只要修改bean的scope值为prototype即可。而且发现对于
<s:fieldeError>标签只有在返回是请求访问的页面才会有效,网上是这样解释的。由于我用的是html文件,所以就还没测试。出现这个问题的时候,可以注意下。哈哈,刚刚突然有灵感了,亲自测试过这个问题已经解决了,不是上面所说的那样,如果<s:fieldeError>标签没有用的话,那么就是你的jsp文件没有放到WEB-INF目录下,因为struts主张将所有的jsp页面放到WEB-INF下,把文件放进去即可解决。
其次谈谈命名规则,之前我理解的意思是所写的继承了ActionSupport类的类名-validation.xml,其实这样会校验该Action下对应的所有业务逻辑方法。当使用该Action在struts.xml中配置了多个action时,需要校验不同的业务逻辑方法,命名变为ActionName-配置文件中action对应的name值-validation.xml即可,也得注意校验文件的校验规则别出错。
注意:这个是真的气,特此在这里说一下。在action中,除了你的action属性的get方法,就不要使用get开头作为方法名,真的,你不知道它会出现怎样的问题,而且短时间你还不一定能查出来。