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