需求:输入框的"供应商编码"不能为空而且不能与数据库重复,供应商名称不能为空。
解决:
1.input如下
<input id="ssupplierNo" name="ssupplierNo" type="text"
class="form-control input-sm"
value="${supplierinfo.ssupplierNo}" 供应商编码 " />
2.js函数
jQuery(function() {
$('#Form').bootstrapValidator({
feedbackIcons : {
valid : 'glyphicon glyphicon-ok',
invalid : 'glyphicon glyphicon-remove',
validating : 'glyphicon glyphicon-refresh'
}
,
fields : {
ssupplierNo : {
validators : {
notEmpty : {
message : '供应商编码不能为空'
},
stringLength : {
max : 50,
message : '不超过50个字符'
}
,
remote:{
message:'供应商编码已经存在,请重新输入',
url:'<%=request.getContextPath()%>/apps/supplierInfo.do?method=checkSupplierNo',
delay:4000 /*使用延时异步调用服务端方法,4000即文本输入框静止4秒后调用服务端方法*/
}
}
},
ssupplierFullName : {
validators : {
notEmpty : {
message : '供应商名称不能为空'
},
stringLength : {
max : 50,
message : '不超过50个字符'
}
}
},
}
});
}
3.供应商编码唯一性校验控制层代码如下
/* 校验输入框的值是否已经存在 */
@RequestMapping(params = "method=checkSupplierNo")
public
@ResponseBody
JSONObject checkSupplierNo(HttpServletRequest request, ModelMap modelMap) {
String supplierNo = request.getParameter("ssupplierNo");//获取输入框的值
JSONObject result = new JSONObject();
try{
SupplierInfoQuery query = new SupplierInfoQuery();
query.setSsupplierNo(supplierNo);
List<SupplierInfo> supplierInfo_list =supplierInfoService.getSupplierInfosByQueryCriteria(0, Integer.MAX_VALUE, query);
if(supplierInfo_list.size()>0){//如果能查到值说明重复,返回false
result.put("valid", false);
}else{
result.put("valid", true);
}
}
catch (Exception ex) {
ex.printStackTrace();
logger.error(ex);
}
return result;
}
注意事项:
这里需要说明的是bootstrap的remote验证器需要的返回结果一定是json格式的数据 :
{"valid":false} //表示不合法,验证不通过
{"valid":true} //表示合法,验证通过
如果返回任何其他的值,页面验证将获取不到验证结果导致无法验证。