From 5c04c26426f1b2920c5b54af8fe72bb71097d61d Mon Sep 17 00:00:00 2001 From: tatsu-no-otoshigo Date: Thu, 17 Oct 2024 21:27:05 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E8=BF=BD=E5=8A=A0=20=E3=83=BBBeanValidation?= =?UTF-8?q?=E3=82=A2=E3=83=8E=E3=83=86=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=82=92?= =?UTF-8?q?=E7=8B=AC=E8=87=AA=E3=81=AE=E3=82=82=E3=81=AE=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/data/validator_bean.xlsx | Bin 11571 -> 13135 bytes .../SheetBeanValidatorTest.java | 60 +++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/test/data/validator_bean.xlsx b/src/test/data/validator_bean.xlsx index 2c167559605741f20a7b0c8e8a7b959eebe3954c..8a49eba5054b870c9182a61dc003d861238ce8fe 100644 GIT binary patch delta 9827 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 JO0xVJ{U1;8Mo$0$ delta 8328 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 diff --git a/src/test/java/com/gh/mygreen/xlsmapper/validation/beanvalidation/SheetBeanValidatorTest.java b/src/test/java/com/gh/mygreen/xlsmapper/validation/beanvalidation/SheetBeanValidatorTest.java index 08f5d5a94..0568608b6 100644 --- a/src/test/java/com/gh/mygreen/xlsmapper/validation/beanvalidation/SheetBeanValidatorTest.java +++ b/src/test/java/com/gh/mygreen/xlsmapper/validation/beanvalidation/SheetBeanValidatorTest.java @@ -20,6 +20,7 @@ import javax.validation.constraints.Future; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; +import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.Length; @@ -44,9 +45,9 @@ import com.gh.mygreen.xlsmapper.localization.ResourceBundleMessageResolver; import com.gh.mygreen.xlsmapper.util.IsEmptyBuilder; import com.gh.mygreen.xlsmapper.validation.FieldError; +import com.gh.mygreen.xlsmapper.validation.ObjectError; import com.gh.mygreen.xlsmapper.validation.SheetBindingErrors; import com.gh.mygreen.xlsmapper.validation.SheetErrorFormatter; -import com.gh.mygreen.xlsmapper.validation.ObjectError; /** * {@link SheetBeanValidator}のテスタ @@ -377,6 +378,50 @@ public void test_interpolator_el() throws Exception { } + /** + * アノテーションのメッセージ属性の変更 - エラーあり + */ + @Test + public void test_change_attribute_message() throws Exception { + + + XlsMapper mapper = new XlsMapper(); + mapper.getConfiguration().setContinueTypeBindFailure(true); + + // シートの読み込み + SheetBindingErrors errors; + ChangeAttributeMessage sheet; + try(InputStream in = new FileInputStream("src/test/data/validator_bean.xlsx")) { + errors = mapper.loadDetail(in, ChangeAttributeMessage.class); + sheet = errors.getTarget(); + + } + + // データの書き換え + sheet.code = "あいうえお"; // 不正な値に変更 + + // 入力値検証 + SheetBeanValidator sheetValidator = new SheetBeanValidator(getBeanValidator()); + sheetValidator.validate(sheet, errors); + + printErrors(errors); + + + { + String fieldName = "code"; + FieldError fieldError = errors.getFirstFieldError(fieldName).get(); + assertThat(fieldError.getAddress().toPoint(), is(sheet.positions.get(fieldName))); + assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); + assertThat(fieldError.getCodes(), emptyArray()); // ユーザーメッセージの場合はエラーコードは空。 + assertThat(fieldError.getVariables(), hasEntry("validatedValue", (Object)sheet.code)); + assertThat(fieldError.getVariables(), hasEntry("regexp", "[\\p{Alnum}]+")); + + String message = errorFormatter.format(fieldError); + assertThat(message, is("半角英数字で設定してください。")); + } + + } + private void printErrors(SheetBindingErrors errors) { for(ObjectError error : errors.getAllErrors()) { @@ -465,4 +510,17 @@ public boolean isEmpty() { } } + + @XlsSheet(name="メッセージ属性を変更") + private static class ChangeAttributeMessage { + + private Map positions; + + private Map labels; + + @Pattern(regexp="[\\p{Alnum}]+", message="半角英数字で設定してください。") + @XlsLabelledCell(label="コード", type=LabelledCellType.Right) + private String code; + + } }