2011-03-29 170 views
3

这里是我的FormBean: -JSR 303 Bean验证春季

public class LoginFormBean { 

    @NotEmpty 
    private String userId; 

    @NotEmpty 
    private String password;  

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String pass) { 
     this.password = pass; 
    } 
} 

,并在我的message.properties文件我写: -

NotEmpty={0} must not empty. 

它显示了我的错误消息:userId must not empty.password must not empty.

但我想要显示错误消息为User Id must not empty.'Password must not empty.'

我知道我可以在我的formBean中使用@NotEmpty(message="User Id must not empty"),但我想同步消息,就好像我们需要更改消息一样,它的开销会小一些。
我搜索了JSR文档,但没有找到任何东西来替换我的属性名称userIdUser Id在飞行中。请大家帮助我,从两天内就陷入困境。
如果这是不可能的,那么告诉我,如果没有,然后帮助我的东西替代。

感谢
沙姆斯

回答

0

在同一message.properties文件,你可以添加以下内容:

userId=User Id 
password=Password 

,或者您可以使用字段名称验证消息代码的单独的文件和单独的文件。这将会更具可读性。

好运:)

4

你现在可能已经解决了这个问题,但设立的错误消息对JSR您需要将条目添加到您的属性文件的格式如下303个formbean都要:

<Constraint-Name>.<formbean-name>.<attribute-name>=My Message Text 

在你的情况,这将是:

NotEmpty.loginFormBean.userId=User Id must not empty 

NotEmpty.loginFormBean.password=Password must not empty 

其中loginFormBean是您的窗体的名称,而不是类名。

+0

感谢您的回复,是的,我知道我可以像这样使用,但它仍然不是“可重复使用”。在这种情况下,我必须为属性文件中的每个属性创建一个新条目,即使我在多个bean中使用'userId'属性。 – Shams 2011-06-28 13:29:35

0

仅供参考,请记录BeanPropertyBindingResult实例并检查日志。您会为违反验证的每个属性找到四种不同类型的属性代码。

下面是一个简单的日志以供参考

Field error in object 'member' on field 'name': rejected value []; codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.name,name]; arguments []; default message [name]]; default message [may not be empty] 

在上面的日志,你可以找到 codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]

如果不配置任何错误代码或弹簧没有找到匹配的代码,那么春天都会有用于解决错误消息的DefaultMessageCodesResolver。检查java doc以查看其他错误代码的格式。