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

时间:2015-10-15 14:42:50

标签: java struts2 internationalization resourcebundle properties-file

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

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

使用validation.xml代码可以正常工作,但我希望能够在我的java动作验证方法中使用addFieldError()方法使用相同的消息。我的问题是如何将fieldname传递给消息。如果我使用:

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

我只得到"必须是整数。"消息的一部分。我知道我可以更改消息并使用{0}而不是${getText(fieldname)},但这不是一个选项,因为其他代码会按原样使用消息。

2 个答案:

答案 0 :(得分:3)

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

第二:您应该避免在属性中使用fieldname,因为它是验证程序特定字段。

要实现您想要的功能,无需修改属性文件,您可以使用getter / setter在操作中创建fieldname属性,并在使用addFieldError之前设置其值。

private String fieldname;
// getter/setter

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

答案 1 :(得分:2)

其他人向我展示了另一种方式,我认为我会分享。

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