カスタム検証メッセージが機能しないようです。最初にカスタムバリデーターで試してみましたが、うまくいかなかったので、この例に従って、カスタムメッセージキーで組み込みの制約を使用してみましたが、うまくいきませんでした。
この問題に対する私の 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 アプリに検証を追加していましたが、動作は同じです。検証によって返されるメッセージとして、中かっこで囲まれたキーを取得し続けます。