3

カスタム検証メッセージが機能しないようです。最初にカスタムバリデーターで試してみましたが、うまくいかなかったので、この例に従って、カスタムメッセージキーで組み込みの制約を使用してみましたが、うまくいきませんでした。

この問題に対する私の JUnit4 テスト ケースは次のとおりです。

public class PatternMessageTest {
    private static Validator validator;

    @BeforeClass
    public static void setUp() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

    @Test
    public void testIsValid_invalid() {
        StringHolder stringHolder = new StringHolder();
        stringHolder.setSomeString("not digits");

        Set<ConstraintViolation<StringHolder>> constraintViolations = validator.validate(stringHolder);
            assertEquals(1, constraintViolations.size());
            assertEquals(
                "Some validation message", 
                constraintViolations.iterator().next().getMessage());
    }

    private class StringHolder {
        @Valid
        @Pattern(regexp="\\d+", message="{mymessagekey}")
        private String _someString;

        // _someString getter, setter
    }

}

私のディレクトリValidationMessages.propertiesのルートにあるの内容は次のとおりです。test

mymessagekey=Some validation message

テスト出力は次のとおりです。

org.junit.ComparisonFailure: expected:<[Some validation message]> but was:<[{mymessagekey}]>

したがって、メッセージキーは明らかに見つかりません。私は何を間違っていますか?

関連するクラスパス:

  • 検証-api-1.0.0.GA.jar
  • hibernate-validator-4.1.0.Final.jar
  • hibernate-validator-annotation-processor-4.1.0.Final.jar

このような単純なテスト ケースに取り掛かる前に、Spring MVC アプリに検証を追加していましたが、動作は同じです。検証によって返されるメッセージとして、中かっこで囲まれたキーを取得し続けます。

4

0 に答える 0