JSR 303驗證相關問題及解決 辦法
使用 Hibernate Validator
匯入Hibernate Validator
的相關jar
包
在相關欄位屬性上進行註解
@Size(min = 2, max = 6, message = "{Size.product.name}")
message 可以不寫,會使用預設的來自JSR 303驗證器的錯誤訊息;
如果要自定義錯誤訊息的話,請看自定義錯誤訊息操作步驟;
- Product類
public class Product {
private int id;
@Size(min = 2, max = 6)
private String name;
private float price;
private Date date;
public Product() {
}
// 、、、getter and setter
}
- ProductController類
@Controller
@RequestMapping("/product")
public class ProductController {
@Autowired
private IProductService productService;
@RequestMapping("/input")
public String inputInfo(Model model) {
model.addAttribute("product", new Product());
return "product-add";
}
//必須用@Valid 對Product引數進行標註
@RequestMapping("/add")
public String addProduct(@Valid @ModelAttribute Product product, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()){
List<ObjectError> allErrors = bindingResult.getAllErrors();
for (ObjectError objectError:allErrors){
System.out.println(objectError.getDefaultMessage());
}
model.addAttribute("allErrors", allErrors);
return "product-add";
}
productService.add(product);
return "redirect:/product/list";
}
// 、、、、其他操作
}
效果:
以上操作就可以實現驗證器驗證了,不過錯誤訊息來自JSR 303
的預設錯誤提示訊息;
下面是自定義錯誤提示訊息的操作:
先在Resource
新增屬性檔案,
其中
ValidationMessages
即 properties的名稱,注意:properties檔案的名字一定要命名成:ValidationMessages.properties
填入相關錯誤提示資訊:
格式:
constraint.object.property
為了覆蓋以@Size
標註約束的 Product 物件的 name 屬性,可以在屬性檔案中使用下面的鍵:
Size.product.name
為了覆蓋以@Past
標註約束的 Product 物件的 date 屬性,可以在屬性檔案中使用下面的鍵:
Past.product.date
內容如下:
- 驗證器不需要顯式註冊,但是如果想要從某個屬性檔案中獲取錯誤訊息,則需要通過宣告
messageSource bean
,高速Spring
要去查詢這個檔案;
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="ValidationMessages"/>
</bean>
- 在Product更改如下
public class Product {
private int id;
@Size(min = 2, max = 6, message = "{Size.product.name}")
private String name;
private float price;
private Date date;
public Product() {
}
// 、、、getter and setter
}
效果:
解決中文亂碼問題
- IntelliJ IDEA 2016設定
- Eclipse設定
相關文章
- svn相關問題解決辦法
- 如何使用JSR303驗證及自定義訊息統一處理JS
- 虛擬化問題及解決辦法
- oracle壞塊問題及解決辦法Oracle
- JSR303 資料校驗JS
- composer依賴相關的問題和解決辦法
- Spring Boot 使用 JSR303 實現引數驗證Spring BootJS
- redis快取相關問題及解決方案Redis快取
- Vmware vSphere常見問題及解決辦法
- 跨域問題解決辦法跨域
- 編譯OpenVPN及解決相關依賴問題編譯
- [記錄]Standby相關引數及gap問題解決
- Mac環境中搭建Hadoop相關問題及處理辦法MacHadoop
- 關於 SAP ABAP gateway OData 的一個詭異問題及解決辦法Gateway
- VS2013出現問題及解決辦法
- 【DataBase】:使用Oracle遇到的幾個問題及解決辦法DatabaseOracle
- VNC常用操作及常見問題解決辦法彙總VNC
- 安裝DBD:MySql模組遇到的問題及解決辦法MySql
- 開發圖書館模組遇到問題及相關解決
- JSR - 133 都解決了哪些問題?JS
- 解決requests庫中SSL驗證問題
- 資料併發操作帶的的問題及解決辦法
- ie不相容的幾個js問題及解決辦法JS
- 使用kerl安裝erlang遇到的問題及解決辦法-bak
- Mysql安裝過程中遇到的問題及解決辦法MySql
- RedHat9的service named stop問題及解決辦法(轉)Redhat
- Jekyll 本地除錯部落格遇到的問題及解決辦法除錯
- 【Ubuntu】unknown host問題解決辦法Ubuntu
- HTC Vive遇到的問題解決辦法
- veritas netbackup的問題解決辦法
- iexplore.exe 遇到問題需要關閉的解決辦法
- SaaS無法解決“關鍵”問題
- Sql Mode及相關問題SQL
- display:inline-block帶來的問題及解決辦法inlineBloC
- 【kiss0kill】SQL SERVER EXPRESS 常見問題及解決辦法SQLServerExpress
- elment UI 表格 item 驗證問題解決方案UI
- php onethink驗證碼不顯示的解決辦法PHP
- CentOS7系統安裝虛擬環境,安裝及相關報錯問題解決方案、配置、問題解決、常見相關命令CentOS