play框架手-05. HTTP数据验证.docVIP

  • 3
  • 0
  • 约1.4万字
  • 约 11页
  • 2017-03-08 发布于广东
  • 举报
play框架手-05. HTTP数据验证

05.用play验证http数据 验证确保了某些指定的需求能够获得正确的值。一般用于在存入数据库前对数据进行验证或表单验证。 在play里验证如何进行的? 每个请求都有他自己的Validation 验证 对象和相应的错误集合。有以下三种方式来定义验证。 在一个控制器方法,可以直接调用控制器的validation属性的方法。也可使用play.data.validation.Validation类的静态方法来访问API子集。 在控制器的方法参数上使用注释声明来进行验证。 为一个action方法的POJO参数添加@Valid注释来验证POJO属性。 验证对象负责维护play.data.validation.Error对象集合。每个error都有两个属性: key:用于确定是哪个元素导致的错误。当play发生错误时,key值可以任意设置,它遵循java变量默认命名约定。 message:其内容包含了错误的文本描述。message可以是纯文本消息,也可以是key的消息绑定(特别是国际化支持)。 下面我们使用第一种方式来验证一个简单的http参数: public static void hello String name validation.required name ; … 此代码用于检测name变量是否正确设置。如果不正确,相应的错误消息将会增加到当前错误集合里。 如果需要,可以为每一个需要验证的变更重复这个操作: public static void hello String name, Integer age validation.required name ; validation.required age ; validation.min age, 0 ; … 验证的错误消息 最后我们可以检索出错误信息并显示出来: public static void hello String name, Integer age validation.required name ; validation.required age ; validation.min age, 0 ; if validation.hasErrors for Error error : validation.errors System.out.println error.message ; 假如name和age都为null,这时将显示: Required Required 这是因为在$PLAY_HOME/resources/messages里设置的默认消息如下: validation.required Required 可通过以下三种方式定制验证消息: 重写应用程序的messages文件,对其中的消息进行重新定义。 提供一个定制消息作为附加的验证参数。 为局部消息提供一个消息key作为附加的验证参数。 Localised validation messages 局部验证消息 最简单的方式就是重写messages文件内容: validation.required Please enter a value 也可提供其他语言的区位,详见Internationalization。 验证消息参数 在消息里为错误key使用占位符: validation.required %s is required 输出为: name is required age is required 缺点:当超过一个必须字体验证时(使用validation.requied age ),play会发生不能确定当前的参数名称语法错误。在这种情况下,就必须直接指定域名称,比如:validation.required age, age 。 错误key默认就是参数名称。比如在hello action里的name参数可以限定如下: name Customer name 输出为: Customer name is required age is required 也可使用error.message String key 方法重载错误key: Error error validation.required name .error; if error ! null System.out.println error.message Customer name ; 许多内建的验证定义附加消息参数都适用于验证参数。比如,match验证为指定的正则表达式定义了第2个字符串参数,这与%s占位符不同: validation.match Must match %2$s 与此相似,range验证定义了两个附加的数字参数2和3: validation.range Not in the range %2$d thr

文档评论(0)

1亿VIP精品文档

相关文档