1. Struts中的数据验证 用户的输入验证,必须做,且工作量巨大。 1、验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省。 实际开发中:客户端+服务端 2.1、编程式验证 前提:动作类必须继承ActionSupport 在代码中编写验证规则。 所有编程式验证的弊端:硬编码。 2.1.1针对动作类中的所有动作方法进行验证:在动作类中覆盖public void validate()方法。该验证方式会验证动作类的所有方法,给不需要验证的方法需要加上@SkipValidation注解 public void validate() { //在执行动作方法前,会先执行该验证的额方法!(validate) if(StringUtils.isEmpty(user.getName())){ //针对不正确的情况,往map中存放消息即可!当该map为空时,证明验证通过! addFieldError("name", "用户名不能为空!"); } } | 2.1.2针对动作类中的某个动作方法进行验证validation方法遵守书写规范。validate+动作方法名(首字母大写) public String insertUserOrUpdate() throws Exception { return SUCCESS; } //该验证只对insertUserOrUpdate做验证! public void validateInsertUserOrUpdate(){ addFieldError("name", "用户名不能为空!"); } | 2.2、声明式验证(推荐)通过编写验证规则的xml文件。需要验证时,编写xml文件,不要验证,就不写。 优势:解决了2.1编程式验证的弊端 2.2.1针对动作类中的所有动作进行验证:在动作类所在的包中,建立一个ActionClassName-validation.xml的文件 <?xml version="1.0" encoding="UTF-8"?> <!-- 约束:在xwork-core包中的xwork-validator.dtd文件中--> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <!-- 要验证的字段:name属性和form表单一致 --> <field name="name"> <!-- 指定验证器,在xwork-core包中的com.opensymphony.xwork2.validator.validators.default.xml文件中 requiredstring是内置的验证器,默认会去掉首尾的空格,验证null和"" --> <field-validator type="requiredstring"> <!-- 提示信息 --> <message>请输入用户名</message> </field-validator> </field> </validators> |
2.2.2针对动作类中的某个动作进行验证:在动作类所在的包中建立一个xml文件,名称为ActionClassName-ActionName-validation.xml
|