我们正在2.5中使用新的GWT验证库。
我们正在向屏幕添加一个汇总的违规列表。此列表必须显示本地化的字段名称。
@MyNotNull(foo= "Stage")
public String getStage();
需要显示本地化消息
“舞台是必填字段”
MyValidationMessages.properties中的消息为
{foo}是必填字段
请注意,注释不允许将非常量值分配给属性。所以我们必须在设计时以某种方式获取语言环境值:/
这不起作用
@MyNotNull(foo = injector.getLocale().errorMessage())
public String errorMessage()
如何使用localeKey在区域设置文件中查找区域设置,因为属性需要常量?
答案 0 :(得分:0)
解决方案是
复制违规并将邮件更改为本地化版本
protected String getAttributeValue(ConstraintViolation violation,String key){ ConstraintDescriptor descriptor = violation.getConstraintDescriptor();
if (descriptor.getAttributes().containsKey(key))
return (String) descriptor.getAttributes().get(key);
return null;
}
protected ConstraintViolation<T> copyMessage(ConstraintViolation<T> violation, String message) {
return ConstraintViolationImpl.<T> builder() //
.setConstraintDescriptor(violation.getConstraintDescriptor()) //
.setInvalidValue(violation.getInvalidValue()) //
.setLeafBean(violation.getLeafBean()) //
.setMessage(message) //
.setMessageTemplate(violation.getMessageTemplate()) //
.setPropertyPath(violation.getPropertyPath()) //
.setRootBean(violation.getRootBean()) //
.setRootBeanClass(violation.getRootBeanClass()) //
.build();
}