需求:輸入框的"供應商編碼"不能為空而且不能與數據庫重復,供應商名稱不能為空。
解決:
1.input如下
1 <input id="ssupplierNo" name="ssupplierNo" type="text" 2 class="form-control input-sm" 3 value="${supplierinfo.ssupplierNo}" 供應商編碼 " />
2.js函數
1 jQuery(function() { 2 $('#Form').bootstrapValidator({ 3 feedbackIcons : { 4 valid : 'glyphicon glyphicon-ok', 5 invalid : 'glyphicon glyphicon-remove', 6 validating : 'glyphicon glyphicon-refresh' 7 } 8 , 9 fields : { 10 ssupplierNo : { 11 validators : { 12 notEmpty : { 13 message : '供應商編碼不能為空' 14 }, 15 stringLength : { 16 max : 50, 17 message : '不超過50個字符' 18 } 19 , 20 remote:{ 21 message:'供應商編碼已經存在,請重新輸入', 22 url:'<%=request.getContextPath()%>/apps/supplierInfo.do?method=checkSupplierNo', 23 delay:4000 /*使用延時異步調用服務端方法,4000即文本輸入框靜止4秒后調用服務端方法*/ 24 } 25 } 26 }, 27 ssupplierFullName : { 28 validators : { 29 notEmpty : { 30 message : '供應商名稱不能為空' 31 }, 32 stringLength : { 33 max : 50, 34 message : '不超過50個字符' 35 } 36 } 37 }, 38 } 39 }); 40 }
3.供應商編碼唯一性校驗控制層代碼如下
1 /* 校驗輸入框的值是否已經存在 */ 2 @RequestMapping(params = "method=checkSupplierNo") 3 public 4 @ResponseBody 5 JSONObject checkSupplierNo(HttpServletRequest request, ModelMap modelMap) { 6 String supplierNo = request.getParameter("ssupplierNo");//獲取輸入框的值 7 JSONObject result = new JSONObject(); 8 try{ 9 SupplierInfoQuery query = new SupplierInfoQuery(); 10 query.setSsupplierNo(supplierNo); 11 List<SupplierInfo> supplierInfo_list =supplierInfoService.getSupplierInfosByQueryCriteria(0, Integer.MAX_VALUE, query); 12 if(supplierInfo_list.size()>0){//如果能查到值說明重復,返回false 13 result.put("valid", false); 14 }else{ 15 result.put("valid", true); 16 } 17 } 18 catch (Exception ex) { 19 ex.printStackTrace(); 20 logger.error(ex); 21 } 22 return result; 23 }
注意事項:
這里需要說明的是bootstrap的remote驗證器需要的返回結果一定是json格式的數據 :
{"valid":false} //表示不合法,驗證不通過 {"valid":true} //表示合法,驗證通過
如果返回任何其他的值,頁面驗證將獲取不到驗證結果導致無法驗證。