如何将字段名称传递给属性文件中的全局消息
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"));
我的全局-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"));