1. 程式人生 > >SpringMVC 使用JSR-303進行校驗Bean Validation-----訊息中使用EL表示式

SpringMVC 使用JSR-303進行校驗Bean Validation-----訊息中使用EL表示式

假設我們需要顯示如:使用者名稱[NAME]長度必須在[MIN]到[MAX]之間,此處大家可以看到,我們不想把一些資料寫死,如NAME、MIN、MAX;此時我們可以使用EL表示式。

@Length(min = 5, max = 20, message = "{user.name.length.illegal}", groups = {First.class})  

錯誤訊息:

user.name.length.illegal=使用者名稱長度必須在{min}到{max}之間  

其中我們可以使用{驗證註解的屬性}得到這些值;如{min}得到@Length中的min值;其他的也是類似的。

到此,我們還是無法得到出錯的那個輸入值,如name=zhangsan。此時就需要EL表示式的支援,首先確定引入EL jar包且版本正確。然後使用如:

user.name.length.illegal=使用者名稱[${validatedValue}]長度必須在520之間  

使用如EL表示式:validatedValuezhangsan使{min > 1 ? ‘大於1’ : ‘小於等於1’},及在EL表示式中也能拿到如@Length的min等資料。

另外我們還可以拿到一個java.util.Formatter型別的formatter變數進行格式化:

${formatter.format("%04d", min)}  

例項

1.新增校驗

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@GroupSequence({User.Adult.class, User.Other.class,User.class})
public class User {
    @NotNull(message="{user.id.null}")
    private String userName;
    //@Max(value=120,message="年齡最大不能查過120",groups = {Adult.class})
private int age; @Email(message="郵箱格式錯誤",groups = {Other.class}) private String email; @CannotHaveBlank(groups = {Adult.class}) private String sex; @Valid @ConvertGroup(from=Adult.class,to=Other.class) private String password; @Length(min = 8,max = 11,message = "{user.phoneNum.length}") private String phoneNum; //分組 public interface Adult{} public interface Other{} }

2.新增message資訊

user.phoneNum.length=手機號碼【${validatedValue}】長度必須在{min}{max}之間

3.測試

想了解更多java相關技術,請關注公眾號“JavaEE那些事”

掃描下面二維碼,更多技術資料等你來拿
這裡寫圖片描述