需求:输入框的"供应商编码"不能为空而且不能与数据库重复,供应商名称不能为空。
解决:
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 ListsupplierInfo_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} //表示合法,验证通过
如果返回任何其他的值,页面验证将获取不到验证结果导致无法验证。