常常写客服端验证代码,写多了就感觉是否有啥东西可以简化处理的,这几天看了一下common-validator感觉不错,以前的项目开发的时候没有注意这个东西,感觉挺好的,同时可以进行两端验证。在网上找了好多文章发现都千篇一律的,自己弄了好久都没有弄好,今天终于有了大概的眉目,我把我自己实现bean验证通过配置文件来进行配置,springmvc中用注解 记录如下:
1首先要导入spring-modules-validation.jar,和common-validator包,spring-modules-validation.jar里面有三种验证系统,感觉如果能把这几个再分详细点就好了。
因为我现在先实现这种功能,bean验证通过配置文件来进行配置,springmvc中我用的是注解,网上找到的是bean也是使用的注解完成的。
2在mvc配置文件中加入配置
<!-- 表单验证管理 -->
<!-- <bean id="beanValidator"
class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory" />
</bean> 这个是bean验证的方式,下面是通过配置的验证器-->
<bean id="confValidator"
class="org.springmodules.validation.commons.ConfigurableBeanValidator">
<property name="validatorFactory" ref="validatorFactory" />
</bean>
<bean id="validatorFactory"
class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>WEB-INF/validator-rules.xml</value>
<value>WEB-INF/validation.xml</value>
</list>
</property>
</bean>
3在controller中加入
@Controller
public class ServiceModelController{
@Autowired
private GgwsfwbService ggwsfwbService;
@Autowired
ConfigurableBeanValidator confValidator;
......在保存数据前验证
@RequestMapping("/savemodel")
public String saveServiceModel(@ModelAttribute("PhServiceModelForm")PhServiceModel obj,
BindingResult bindingResult,
HttpSession session,
ModelMap model){
confValidator.setFormName("PhServiceModelForm");
confValidator.validate(obj, bindingResult);
。。。。。。
这里增加个控制将公用验证函数输出到单独的文件,如果不这样处理而单独访问这个jsp页面,将会发生错误,有兴趣的可以试试
@RequestMapping("/validator")
public String printJavaScript(){
return "validator";
}
这个validator.jsp页面内容如下
<%@ page language="java" pageEncoding="utf-8" contentType="javascript/x-javascript; charset=utf-8;"%>
<%@ taglib uri="http://www.springmodules.org/tags/commons-validator" prefix="validator" %>
<validator:javascript dynamicJavascript="false" staticJavascript="true"/>
3jsp页面调用产生的js,我系统默认访问后缀为htm
<script type="text/javascript" src="<c:url value="/validator.htm"></c:url>">
<validator:javascript formName="PhServiceModelForm" dynamicJavascript="true" staticJavascript="true" xhtml="true" cdata="false"/>
在from的onsubmit函数
<form id="form1" name="form1" method="post" action="<c:url value="/savemodel.htm"></c:url>" οnsubmit="return validatePhServiceModelForm(this);">
<s:bind path="PhServiceModelForm.START_DATE">
<input type="text" name="START_DATE" id="START_DATE" value="${status.value}"/>${status.errorMessage}
</s:bind>
以上过程就是我实现spring, common-validator的验证过程,我将validator的配置文件上传上来,不过这个配置文件还有些问题,仅供参考,
如果谁有更好的解决办法欢迎指教