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
- JSR303 資料校驗JS
- Spring Boot 使用 JSR303 實現引數驗證Spring BootJS
- composer依賴相關的問題和解決辦法
- redis快取相關問題及解決方案Redis快取
- JSR - 133 都解決了哪些問題?JS
- 跨域問題解決辦法跨域
- Java SpringBoot上的引數校驗JSR 303 ValidationJavaSpring BootJS
- 關於 SAP ABAP gateway OData 的一個詭異問題及解決辦法Gateway
- Jenkins從Ubuntu遷移至AlmaLinux問題及相關解決記錄JenkinsUbuntuLinux
- 資料併發操作帶的的問題及解決辦法
- Jekyll 本地除錯部落格遇到的問題及解決辦法除錯
- 解決requests庫中SSL驗證問題
- php onethink驗證碼不顯示的解決辦法PHP
- CentOS7系統安裝虛擬環境,安裝及相關報錯問題解決方案、配置、問題解決、常見相關命令CentOS
- elment UI 表格 item 驗證問題解決方案UI
- 關於Android檔案數過大,分包問題的解決辦法Android
- Xshell連線Linux慢問題解決辦法Linux
- Macbook Pro Big Sur出問題解決辦法Mac
- 前端inline元素間隙問題解決辦法前端inline
- sbt下載相關依賴過慢的解決辦法
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- input 與 button 的問題 (空隙/不等高/對不齊)及 解決辦法
- 生產內網ssh登陸變慢問題原因及解決辦法內網
- 【知識分享】伺服器常見異常問題及解決辦法伺服器
- JSR303自定義校驗註解,自定義註解校驗字串是否是JSON字串,可擴充套件字串JSON套件
- 寶塔後臺解決寶塔相關問題
- 關於Oracle 9i字符集問題的解決辦法FCOracle
- docker網路問題解決辦法“大全”:關於宿主機訪問不了docker容器中web服務,或者容器內訪問不了外網的問題的解決辦法DockerWeb
- matlab編譯exe問題具體解決辦法Matlab編譯
- IAP 內購二次驗證(出現的問題21002及解決方案)
- 一些長時間GC停頓問題的排查及解決辦法GC
- Vue 專案裡戳中你痛點的問題及解決辦法(更新)Vue
- 安裝IE8後引發的兩個問題及解決辦法
- PyTorch圖文安裝教程(Win10),含遇到的問題及解決辦法PyTorchWin10
- web開發技巧-網頁排版佈局常見問題及解決辦法Web網頁
- mysql事件關閉解決辦法MySql事件
- [文件教程]解決SAE下本地除錯相關問題除錯