13.07.2015 Views

JSR 303 的参考实现使用指南 - JBoss

JSR 303 的参考实现使用指南 - JBoss

JSR 303 的参考实现使用指南 - JBoss

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

验 证 失 败 提 示 信 息 解 析表 2.1. ConstraintViolation 中 的 方 法方 法 名 作 用 示 例 ( 请 参 考 例 2.9“Validator.validate() 使 用方 法 ”)getMessage()获 取 ( 经 过 翻 译 的 ) 校 验 错 误 信息may not be nullgetMessageTemplate() 获 取 错 误 信 息 模 版 {javax.validation.constraints.NotNull.messagegetRootBean() 获 取 被 校 验 的 根 实 体 对 象 cargetRootBeanClass() 获 取 被 校 验 的 根 实 体 类 . Car.classgetLeafBean()getPropertyPath()如 果 约 束 是 添 加 在 一 个bean( 实 体 对 象 ) 上 的 , 那 么 则返 回 这 个 bean 的 实 例 , 如 果 是约 束 是 定 义 在 一 个 属 性 上 的 ,则 返 回 这 个 属 性 所 属 的 bean 的实 例 对 象 .从 被 验 证 的 根 对 象 到 被 验 证 的属 性 的 路 径 .cargetInvalidValue() 倒 是 校 验 失 败 的 值 . passengersgetConstraintDescriptor() 导 致 校 验 失 败 的 约 束 定 义 .2.2.4. 验 证 失 败 提 示 信 息 解 析在 第 3 章 创 建 自 己 的 约 束 规 则 中 , 我 们 会 看 到 , 每 个 约 束 定 义 中 都 包 含 有 一 个 用 于 提 示 验 证 结果 的 消 息 模 版 , 并 且 在 声 明 一 个 约 束 条 件 的 时 候 , 你 可 以 通 过 这 个 约 束 中 的 message 属 性 来 重 写 默 认的 消 息 模 版 , 可 以 参 考 例 2.13 “Driver”. 如 果 在 校 验 的 时 候 , 这 个 约 束 条 件 没 有 通 过 , 那么 你 配 置 的 MessageInterpolator 会 被 用 来 当 成 解 析 器 来 解 析 这 个 约 束 中 定 义 的 消 息 模 版 , 从 而 得 到最 终 的 验 证 失 败 提 示 信 息 . 这 个 解 析 器 会 尝 试 解 析 模 版 中 的 占 位 符 ( 大 括 号 括 起 来 的 字 符 串 ).其 中 , Hibernate Validator 中 默 认 的 解 析 器 (MessageInterpolator) 会 先 在 类 路 径 下 找 名 称为 ValidationMessages.properties 的 ResourceBundle, 然 后 将 占 位 符 和 这 个 文 件 中 定 义 的 resource 进行 匹 配 , 如 果 匹 配 不 成 功 的 话 , 那 么 它 会 继 续 匹 配 Hibernate Validator 自 带 的 位 于 /org/hibernate/validator/ValidationMessages.properties 的 ResourceBundle, 依 次 类 推 , 递 归 的 匹 配 所 有 的 占 位 符 .因 为 大 括 号 { 在 这 里 是 特 殊 字 符 , 所 以 , 你 可 以 通 过 使 用 反 斜 线 来 对 其 进 行 转 义 , 例 如 :•\{ 被 转 义 成 {•\} 被 转 义 成 }•\\ 被 转 义 成 \如 果 默 认 的 消 息 解 析 器 不 能 够 满 足 你 的 需 求 , 那 么 你 也 可 以 在 创 建 ValidatorFactory 的 时 候 , 将 其替 换 为 一 个 你 自 定 义 的 MessageInterpolator, 具 体 请 参 考 第 5 章 Bootstrapping.15

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!