package demo.dto; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; import java.io.Serializable; public class ProductDto implements Serializable { @NotEmpty(message = "姓名 不容許爲空") @Length(min = 2, max = 10, message = "姓名 長度必須在 {min} - {max} 之間") private String userName; @NotEmpty(message = "密碼 不容許爲空") private String password; @NotEmpty(message = "真實姓名 不容許爲空") private String realName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName == null ? null : userName.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } public String getRealName() { return realName; } public void setRealName(String realName) { this.realName = realName == null ? null : realName.trim(); } /** * @NotEmpty,@NotNull和@NotBlank的區別 1 @NotEmpty :不能爲null,且Size>0 2 @NotNull:不能爲null,但能夠爲empty,沒有Size的約束 3 @NotBlank:只用於String,不能爲null且trim()以後size>0 * @NotNull 使用該註解的字段的值不能爲null,不然驗證沒法經過。 @Null 修飾的字段在驗證時必須是null,不然驗證沒法經過。 @Size 以下代碼表示,修飾的字段長度不能超過5或者低於。 @Size(min = 1, max = 5) private String name; 1 2 @Max 以下代碼表示,該字段的最大值爲19,不然沒法經過驗證。 @Max(value = 19) private Integer age; 1 2 @Min 同理,被該註解修飾的字段的最小值,不能低於某個值。 @AssertFalse 該字段值爲false時,驗證才能經過。 @AssertTrue 該字段值爲true時,驗證才能經過。 @DecimalMax 驗證小數的最大值。 @DecimalMax(value = "12.35") private double money; 1 2 @DecimalMin 驗證小數的最小值。 @Digits 驗證數字的整數位和小數位的位數是否超過指定的長度。 @Digits(integer = 2, fraction = 2) private double money; 1 2 @Future 驗證日期是否在當前時間以後,不然沒法經過校驗。 @Future private Date date; 1 2 @Past 驗證日期是否在當前時間以前,不然沒法經過校驗。 @Pattern 用於驗證字段是否與給定的正則相匹配。 @Pattern(regexp = "[abc]") private String name; */ }
package demo.entity; import java.io.Serializable; public class Product implements Serializable { private Integer id; private String userName; private String password; private String realName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName == null ? null : userName.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } public String getRealName() { return realName; } public void setRealName(String realName) { this.realName = realName == null ? null : realName.trim(); } @Override public String toString() { return "Product{" + "id=" + id + ", username='" + userName + '\'' + ", password='" + password + '\'' + ", realname='" + realName + '\'' + '}'; } }
//添加數據 @RequestMapping("/addproduct") public Object addproduct(@Valid ProductDto model, BindingResult result) { int errorCount = result.getErrorCount(); MessagePack messagePack = new MessagePack(); // 驗證字段是否符合規則 if (result.hasErrors()) { throw new RuntimeException(result.getFieldError().getDefaultMessage()); } else { Product product = new Product(); BeanUtils.copyProperties(model, product); // 操做數據 int i = Convert.toInt(productService.addProduct(product)); // 判斷操做成功與否 if (i > 0) { messagePack.setCode(0); messagePack.setMessage("新增商品成功"); messagePack.setObject(null); messagePack.setStatus("OK"); } else { messagePack.setCode(-1); messagePack.setMessage("新增商品失敗"); messagePack.setObject(null); messagePack.setStatus("error"); } } return messagePack; }