如何将字段名称传递给属性文件中的全局消息

How to pass a field name to the global message in the properties file

我的全局-messages.properties 文件中有以下消息。

errors.integer=${getText(fieldname)} must be an integer.

与 validation.xml 代码配合使用效果很好,但我希望能够在我的 java 操作验证方法中使用与 addFieldError() 方法相同的消息。我的问题是如何将 fieldname 传递给消息。如果我使用:

addFieldError("seqId", getText("errors.integer"));

我只收到消息的 "must be an integer." 部分。我知道我可以更改消息并使用 {0} 而不是 ${getText(fieldname)} 但这不是一个选项,因为其他代码按原样使用消息。

首先:您应该真正避免在属性中使用 getText,因为它仅在某些上下文中可用。

其次:您应该真正避免在属性中使用 fieldname,因为它是特定于验证器的字段。

要实现你想要的,w/o 修改 属性 文件,你可以在你的操作中使用 getter/setter 创建一个 fieldname 属性 并设置它使用 addFieldError.

前的值
private String fieldname;
// getter/setter

// ...
fieldname = "seqId";
addFieldError("seqId", getText("errors.integer"));

其他人向我展示了另一种有效的方法,我认为我会分享。

addFieldError("",getText("seqId")+ getText("errors.integer"));