validform验证是一种非常方便的,实用的验证方式
对于需要验证后台数据的,validform是一个非常明智的选择
validform的ajaxurl属性能够完美的实现:当输入完成某一输入框,就会调用后台方法进行验证,如果符合要求就返回y,如果不符合要求就返回n
现在以添加乡镇信息为例作为讲解:
业务需求:用户录入乡镇信息,包括乡镇编码和乡镇名称,每当输入完成编号或名称光标移开的时候,就要验证编码或者名称是否在数据库中已经存在,如果存在,那么就提示进行重新输入,如果不存在就提示编码或名称可用
用户界面:
解决方案:
使用validform验证控件实现需求
jsp页面代码:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<!DOCTYPE html>
<html>
<head>
<title>乡镇信息</title>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<script type="text/javascript" src="plug-in/ckeditor_new/ckeditor.js"></script>
<script type="text/javascript" src="plug-in/ckfinder/ckfinder.js"></script>
<script type="text/javascript">
//编写自定义JS代码
</script>
</head>
<body>
<t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" action="jformTownInfoController.do?doAdd" >
<input id="id" name="id" type="hidden" value="${jformTownInfoPage.id }">
<input id="createBy" name="createBy" type="hidden" value="${jformTownInfoPage.createBy }">
<input id="createDate" name="createDate" type="hidden" value="${jformTownInfoPage.createDate }">
<table style="width: 600px;" cellpadding="0" cellspacing="1" class="formtable">
<tr>
<td align="right">
<label class="Validform_label">
乡镇编码:
</label>
</td>
<td class="value">
<input id="townCode" name="townCode" type="text" style="width: 150px" class="inputxt"
datatype="*" <span style="color:#ff0000;">ajaxurl="jformTownInfoController.do?checkSameTownCode"</span>
>
<span class="Validform_checktip"></span>
<label class="Validform_label" style="display: none;">乡镇编码</label>
</td>
</tr>
<tr>
<td align="right">
<label class="Validform_label">
乡镇名称:
</label>
</td>
<td class="value">
<input id="townName" name="townName" type="text" style="width: 150px" class="inputxt"
datatype="*" <span style="color:#ff0000;">ajaxurl="jformTownInfoController.do?checkSameTownName"</span>
>
<span class="Validform_checktip"></span>
<label class="Validform_label" style="display: none;">乡镇名称</label>
</td>
</tr>
<tr>
<td align="right">
<label class="Validform_label">
是否可用:
</label>
</td>
<td class="value">
<t:dictSelect field="isOk" type="list"
typeGroupCode="yesorno" defaultVal="${jformTownInfoPage.isOk}" hasLabel="false" title="是否可用"></t:dictSelect>
<span class="Validform_checktip"></span>
<label class="Validform_label" style="display: none;">是否可用</label>
</td>
</tr>
<tr>
<td align="right">
<label class="Validform_label">
备注:
</label>
</td>
<td class="value">
<input id="remark" name="remark" type="text" style="width: 150px" class="inputxt"
>
<span class="Validform_checktip"></span>
<label class="Validform_label" style="display: none;">备注</label>
</td>
</tr>
</table>
</t:formvalid>
</body>
<script src = "webpage/gwc/db/town/jformTownInfo.js"></script>
后台代码:
/**
* 检测系统中是否存在该编码
* @param request
* @return
*/
@RequestMapping(params="checkSameTownCode")
@ResponseBody
public Map<String, String> checkSameTownCode(HttpServletRequest request,HttpServletResponse response){
String ftownCode = StringUtil.nvl(request.getParameter("param"));
logger.info("获得的乡镇编码:"+ftownCode);
List<JformTownInfoEntity> list = new ArrayList<JformTownInfoEntity>();
list = jformTownInfoService.findByProperty(JformTownInfoEntity.class, "townCode", ftownCode);
Map<String , String> map = new HashMap<String, String>();
if (list.size()>0) {
map.put("info", "系统中已经存在该编码");
map.put("status", "n");
}else {
map.put("info", "该编码可用");
map.put("status", "y");
}
return map;
}
/**
* 检测系统中是否存在该名称
* @param request
* @return
*/
@RequestMapping(params="checkSameTownName")
@ResponseBody
public Map<String, String> checkSameTownName(HttpServletRequest request,HttpServletResponse response){
String ftownCode = StringUtil.nvl(request.getParameter("param"));
logger.info("获得的乡镇名称:"+ftownCode);
List<JformTownInfoEntity> list = new ArrayList<JformTownInfoEntity>();
list = jformTownInfoService.findByProperty(JformTownInfoEntity.class, "townCode", ftownCode);
Map<String , String> map = new HashMap<String, String>();
if (list.size()>0) {
map.put("info", "系统中已经存在该名称");
map.put("status", "n");
}else {
map.put("info", "该名称可用");
map.put("status", "y");
}
return map;
}
需要注意:在后台获得该字段的值用的是:
request.getParameter("param")
如果要获得该字段的name值:用
request.getParameter("name")
如果验证通过,要返回如下JSON格式数据:
{“info”:”demo info”,”status”:”y”}
如果验证不通过,则返回如下数据:
{“info”:”demo info”,”status”:”n”}