自定义注解,主要是实现ConstraintValidator的处理类即可,这里已编写一个校验常量的注解为例:参数值只能为特定的值。
自定义注解
package Cc.LiSen.Validators;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ClassName: EmailValidator <br/>
* Description: <br/>
* date: 2019/7/26 20:44<br/>
*
* @since JDK 1.8
*/
@Constraint(validatedBy = EmailValidatorHandler.class)
@Target({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION_TYPE,ElementType.CONSTRUCTOR,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface EmailValidator {
String message() default "只能使用lisen.org后缀的邮箱";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String value();
}
注解处理类
package Cc.LiSen.Validators;
import org.apache.tomcat.util.bcel.classfile.Constant;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Date;
/**
* ClassName: EmailValidatorHandler <br/>
* Description: <br/>
* date: 2019/7/26 19:54<br/>
*
* @since JDK 1.8
*/
public class EmailValidatorHandler implements ConstraintValidator<EmailValidator, String> {
private String regEmail;
@Override
public void initialize(EmailValidator constraintAnnotation) {
regEmail = constraintAnnotation.value();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return regEmail.endsWith(value);
}
}
使用注解
package Cc.LiSen.Pojos;
import Cc.LiSen.Validators.EmailValidator;
import lombok.Data;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.URL;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
/**
* ClassName: User <br/>
* Description: <br/>
* date: 2019/7/21 11:38<br/>
*
* @since JDK 1.8
*/
@Table(name="Users")
@Entity
public class User {
public long getID() {
return ID;
}
public void setID(long ID) {
this.ID = ID;
}
public String getUserLogin() {
return userLogin;
}
public void setUserLogin(String userLogin) {
this.userLogin = userLogin;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
public String getUserNicename() {
return userNicename;
}
public void setUserNicename(String userNicename) {
this.userNicename = userNicename;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getUserUrl() {
return userUrl;
}
public void setUserUrl(String userUrl) {
this.userUrl = userUrl;
}
public Date getUserRegistered() {
return userRegistered;
}
public void setUserRegistered(Date userRegistered) {
this.userRegistered = userRegistered;
}
public String getUserActivation_key() {
return userActivation_key;
}
public void setUserActivation_key(String userActivation_key) {
this.userActivation_key = userActivation_key;
}
public int getUserStatus() {
return userStatus;
}
public void setUserStatus(int userStatus) {
this.userStatus = userStatus;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long ID;
@Column(name = "user_login",length = (60))
private String userLogin;
private String userPass;
private String userNicename;
@Length(min = 0,max = 10,message = "邮箱长度不能超过10位")
@EmailValidator(value = "@lisen.org")
private String userEmail;
@URL
private String userUrl;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date userRegistered;
private String userActivation_key;
private int userStatus;
private String displayName;
}
使用
@RequestMapping("/page/{num}")
ModelAndView GetArticleByPage(@PathVariable int num) {
List<PostType> postTypesTop = postTypeService.findTopMenu(1, "posttype_order");
List<PostType> postTypesNav = postTypeService.findTopMenu(0, "posttype_order");
Page<Post> postPage = postService.findAllPosts(num, 10, Sort.Direction.DESC, new String[]{"postDate"});
int pageNum = postPage.getTotalPages();
int count = postPage.getNumber();
ModelMap map = new ModelMap();
map.addAttribute("pageNum", pageNum);
if (pageNum > num) {
map.addAttribute("nextPage", num + 1);
}
map.put("posttypestop", postTypesTop);
map.put("posttypesnav", postTypesNav);
map.put("posts", postPage.getContent());
return new ModelAndView("index", map);
}
springboot自定义校验注解_木子网 http://togelsingapuraku.com
测试一下