代码之家  ›  专栏  ›  技术社区  ›  bastianneu

类型与i18n标签(而不是属性名)不匹配

  •  2
  • bastianneu  · 技术社区  · 15 年前

    默认情况下,message.properties包含以下内容:

    Java.Lang.双=属性{ 0 }必须是有效数字

    占位符0替换为属性名。我想使用用于前端的标签,如下所示:

    Java.Lang.Buff=属性{奇妙标签}必须是有效的数字。

    我的第一次尝试:

    Java.Lang.Doudi=属性${Mead(代码:‘0’)}必须是一个有效的数字。

    不起作用,因为没有“0”消息。当时文件不清楚。 有人有这个主意吗?

    编辑:

    好吧,我可以为如下的每个属性编写一条错误消息:

    typemismatch.book.book number=属性book number必须是有效数字。

    但这似乎是很多额外的工作…

    4 回复  |  直到 11 年前
        1
  •  2
  •   Igor luckyamit    12 年前

    所以我犯了一个小错误……现在很简单……我在这里回答。也许会有人碰到这个问题:

    我的错误是:

    typeMismatch.java.lang.Double=Property {0} must be a valid number
    

    0替换为属性名称。

    原因是GrailsAPI呈现错误正在寻找正确的类名和属性。

    例如:

    我的班级叫书,属性是数字。

    在我的邮件属性中:

    book.number = Booknumber
    

    对于i18n,一切正常,但当必须出现错误消息时,它显示以下信息:

    "Property number must be a valid number."
    

    消息属性中的正确版本:

    Book.number = Booknumber
    

    现在为我工作。-)

        2
  •  1
  •   Al Belsky    15 年前

    令人惊叹的!非常感谢你的职位! 当它开始对我不起作用时,我花了一些时间才意识到我需要在属性名前面使用完全限定的类名。所以语法是:

    package.ClassName.propertyName=Label
    

    非常有用!再次感谢! 铝

        3
  •  0
  •   Maxym    13 年前

    Spring的数据绑定错误验证器(“0”必须是有效数字)想要 fullClassName.fieldName 短类名和/或.label无法识别,请参见 org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError

    Grails验证程序(“0必须是有效的电子邮件地址”)需要 FQClassName.fieldName.label classPropertyName.fieldName.label 添加 .label 是必须的,从 org.codehaus.groovy.grails.validation.AbstractConstraint#rejectValueWithDefaultMessage

    因此你需要两者 FQN/shortClassName.attributeName.label FQN.attributeName 在两个验证中获得相同的可翻译的人性化名称。

    http://jira.grails.org/browse/GRAILS-8369

        4
  •  0
  •   jlpp    11 年前

    另一个提示是,如果您收到“property producer.employeecount must be a valid number”等不友好的错误消息,请尝试将名为simply producer.employeecount的属性添加到messages.properties文件中,以防对下一个人有所帮助,例如:

    producer.employeecount=员工人数

    至少在Grails2.0.0中,这将导致更友好的消息:“员工的属性编号必须是有效的数字。”

    使用完全限定的类名(例如com.example.domain.client.employeecount),无论结尾是否有“.label”对我都不起作用。

    希望这能帮助别人。