「kaz_javaSpringBootプログラム自動作成◎自動生成」バグ修正UPをベクターに依頼
「kaz_javaSpringBootプログラム自動作成◎自動生成」バグ修正UPをベクターに依頼した。OKが来たら、また報告する。
www.vector.co.jp
・Zenn本(SpringBoot、Thymeleaf プログラム自動作成(マクロ使用版))
zenn.dev
・2.1(202204120000)
1.バグ修正
■ユーザー情報登録画面、更新画面のパスワード入力のチェックを8桁以上16桁以下に修正する。
①もともとは、必須入力かつ、20桁以下としていた。(当システムでは、@Sizeのminは0固定として使っている)
しかし、パスワードはやはり最低8桁必要なので、@Sizeをコピーして@CheckSizeMinMaxを作った。
②以下が修正、追加箇所
■ユーザー情報Form public class UserForm implements Serializable { ・・・ <<修正前 start>> @NotBlank(groups={GroupOrder1.class}) @Size(min = 0, max = 20, groups={GroupOrder1.class}) <<修正前 end>> <<修正後 start>> @CheckSizeMinMax(min = 8, max = 16, groups={GroupOrder1.class}) <<修正後 end>> @CheckHalfLetterDigitKigou(groups={GroupOrder2.class}) @CheckHalfStartEndSpace(groups={GroupOrder2.class}) private String password; <<修正前 start>> @NotBlank(groups={GroupOrder1.class}) @Size(min = 0, max = 16, groups={GroupOrder1.class}) <<修正前 end>> <<修正後 start>> @CheckSizeMinMax(min = 8, max = 16, groups={GroupOrder1.class}) <<修正後 end>> @CheckHalfLetterDigitKigou(groups={GroupOrder2.class}) @CheckHalfStartEndSpace(groups={GroupOrder2.class}) private String passwordConfirm;
■サイズチェックinterface(MinMaxエラーメッセージ用) <<追加>> package com.kaz01u.demo.validation; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; import com.kaz01u.demo.validation.CheckSizeMinMax.List; /** * 最小から最大指定のサイズチェック */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Repeatable(List.class) @Documented @Constraint(validatedBy = {CheckSizeMinMaxValidator.class}) public @interface CheckSizeMinMax { String message() default "{CheckSizeMinMax}"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; /** * @return size the element must be higher or equal to */ int min() default 0; /** * @return size the element must be lower or equal to */ int max() default Integer.MAX_VALUE; /** * Defines several {@link Size} annotations on the same element. * * @see Size */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented @interface List { CheckSizeMinMax[] value(); } }
■サイズチェックValidator(MinMaxエラーメッセージ用) <<追加>> package com.kaz01u.demo.validation; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; public class CheckSizeMinMaxValidator implements ConstraintValidator<CheckSizeMinMax, String> { private int min; private int max; @Override public void initialize(CheckSizeMinMax checkSizeMinMax) { min = checkSizeMinMax.min(); max = checkSizeMinMax.max(); } @Override public boolean isValid(String value, ConstraintValidatorContext context) { return value.length() >= min && value.length() <= max; } }
■メッセージプロパティにMinMaxエラーメッセージ追加 /demo-spring-kaz01u/src/main/resources/messages.properties # バリデーションエラーメッセージ Size={0}は、{1}桁以下で入力してください <<追加 start>> CheckSizeMinMax={0}は、{2}桁から{1}桁以下で入力してください <<追加 end>>