【问题标题】:Hibernate-validator: How do I interpolate messages with variables containing format "${...}"?Hibernate-validator:如何使用包含格式“${...}”的变量插入消息?
【发布时间】:2014-09-26 18:32:46
【问题描述】:

我有一个休眠验证消息,它插入一个值 ${value}。

问题是,值变量本身是“${ohno}”形式的字符串。我希望我的最终插值消息用这个文字字符串“${ohno}”替换 ${value},但它似乎尝试了某种递归插值,这会产生错误“找不到属性 ohno”。

我真的无法在消息模板中“转义”这个字符串。也许我可以在将它传递给注释之前在字符串本身中对其进行转义,但我宁愿不必这样做(我将此字符串用作其他地方的文字)。

有人知道变通办法吗?或者我应该用 hibernate-validator 开一张票...

【问题讨论】:

    标签: java hibernate hibernate-validator


    【解决方案1】:

    除了转义 {,},\ 和 $ 是需要在 Bean Validation 中转义的元字符之外,实际上没有其他解决方法。请参阅规范中的Message Interpolation。另请参阅验证器问题跟踪器中的 HV-934

    现在,如果您真的不想根据 Bean Validation 规范进行插值,您可以编写您的 on MessageInterpolator 并确保它在 Validator 初始化期间被拾取。基本上你需要一个 validation.xml 来指出你的自定义插值器。检查文档,有几个示例如何做到这一点。

    【讨论】:

    • 谢谢哈代。我是真正创建该票并在那里做出回应的人。我想我没有太多选择。自定义 MessageInterpolator 对我来说可能有点过头了,所以我会尝试转义字符串。
    • 我实际上找到了解决方法。在消息中,我没有使用 {value},而是使用了 ${true?价值: ''}。哈克,但它有效。
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 2011-12-31
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多