1

我有许多使用相同验证约束的 jsf2 Web 项目。

  1. 我可以将所有这些约束放在一个共享库中吗?
  2. 如果是,我可以为验证消息提供翻译吗?
  3. 如果是,我怎样才能以标准方式实现它?
  4. 以下包结构是否正确?

commons.jar 库:

commons.jar
    |
    + library
    |   |
    |   + CustomConstraint1.class
    |   + CustomConstraint2.class
    |
    + ValidationMessages_it.properties
    + ValidationMessages_en.properties
    + ValidationMessages_de.properties
4

2 回答 2

3
  1. 我可以将所有这些约束放在一个共享库中吗?

是的你可以。

  1. 如果是,我可以为验证消息提供翻译吗?

是的,这也是可能的。

  1. 如果是,我怎样才能以标准方式实现它?

例如,您有这样的约束:

package com.example.constraints;

@Target({
        ElementType.FIELD,
        ElementType.PARAMETER,
        ElementType.METHOD
})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {
    FooValidator.class
})
public @interface Foo
{
    String message() default "{com.example.constraints.Foo.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

ValidationMessages.properties在类路径的根目录中指定 a (对于应用程序的默认语言)。对于额外的语言环境,您应该指定一个ValidationMessages_[locale].properties文件。对于荷兰语语言环境,它应该是ValidationMessages_nl.properties.

然后在这些文件中,将消息变量定义为键,将消息定义为值,如下所示:

com.example.constraints.Foo.message=Foo is not valid
于 2012-07-27T11:22:49.090 回答
2

您的捆绑适用于独立 jar。如果您将此 jar 放入具有自身约束和类路径根目录中的 ValidationMessages.properties 的 ear/war 中,它将无法工作。

于 2012-07-28T15:06:33.230 回答