java struts XMLHttpRequest 异步验证前端数据是否合法

//这里给大家一个例子,就是在新增一条记录到数据库中前,对表单填充的数据进行校验,主要是验证前段输入的开始结束时间是否和数据库中的有冲突,是否重叠,

如果重叠,则给出错误提示信息。采用异步验证


//js   获取表单填充数据

function formCheck(){

var taskreserveStart=document.getElementById("taskreserveStart");
var taskreserveEnd=document.getElementById('taskreserveEnd');

var taskemployeeIdtwo=document.getElementById('taskemployeeId').value;

var taskproId=document.getElementById("taskproId").value;
var strMaxProId=document.getElementById('strMaxProId').value;

//调用方法  ajaxcheckTime方法  传入url  以及后台需要获取的数据

ajaxcheckTime("taskCheck!ajaxcheckTime.action?reservestart="+taskreserveStart.value+"&reserveend="+taskreserveEnd.value+"&taskemployeeId="+taskemployeeIdtwo+"&taskproId="+taskproId+"&strMaxProId="+strMaxProId);

}


//通过异步请求 对选择的预订开始结束时间校验
function ajaxcheckTime(url){
var errorMsg="";
var xmlhttp;
if (window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest();
}else{
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST",url,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var obj=eval('('+xmlhttp.responseText+')');
if(obj[0].ERROR != ""){
for(var i=0 ; i<obj.length;i++){
errorMsg+=obj[i].ERROR+"<br>";
}
msg.innerHTML=errorMsg;
}else{
doAction('/addTask');
}
}
}
}
xmlhttp.send();
}


//后台获取前端传回来的数据进行下一步校验

public String ajaxcheckTime() {
try {
//先清空
if(msgList!=null){
msgList.clear();
}
// 设置字符集
response.setCharacterEncoding("UTF-8");
// 获取输出流对象
out = response.getWriter();
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
      
String reservestart = request.getParameter("reservestart");
String reserveend = request.getParameter("reserveend");
       this.taskemployeeId=Integer.valueOf(request.getParameter("taskemployeeId"));
       this.taskproId=Integer.valueOf(request.getParameter("taskproId"));
       this.strMaxProId=request.getParameter("strMaxProId");
       
// 声明JSONArray对象
JSONArray jsonEventType = new JSONArray();
//定义一个空List集合
List<HashMap<String,Object>> resultmap=new ArrayList<HashMap<String,Object>>();
resultmap=获取后台数据;
//获取项目参与人员的长度
if(resultmap!=null){
resultmap=getResultMap(reservestart,reserveend,resultmap);  //调用方法   获取前端保存的数据
int mapcfsize=resultmap.size();
for(int i = 0;i<mapcfsize;i++){
String starttime = String.valueOf(resultmap.get(i).get("STARTTIME"));
String endtime = String.valueOf(resultmap.get(i).get("ENDTIME"));
//检查时间是否存在冲突
isConflict(starttime,endtime);
}
}
if (msgList == null || msgList.size()==0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("ERROR", "");
jsonEventType.put(jsonObject);
} else {
for (int i = 0; i < msgList.size(); i++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("ERROR", msgList.get(i));
jsonEventType.put(jsonObject);
}
}
out.print(jsonEventType);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

/**
* 获取排序以后的所取得的之中结果
* @param resultmap
* @return  resultmap
*/
@SuppressWarnings({"unchecked" })
public List<HashMap<String,Object>> getResultMap(String reservestart,String reserveend,List<HashMap<String,Object>> resultmap){
for(int i=0;i<resultmap.size();i++){
HashMap<String,Object> map = resultmap.get(i);
if(resultmap.size()==1){
reservestart+=","+String.valueOf(map.get("STARTTIME"));
reserveend+=","+String.valueOf(map.get("ENDTIME"));
}else{
if(i==resultmap.size()-1){
reservestart+=String.valueOf(map.get("STARTTIME"));
reserveend+=String.valueOf(map.get("ENDTIME"));
}else{
reservestart+=","+String.valueOf(map.get("STARTTIME"))+",";
reserveend+=","+String.valueOf(map.get("ENDTIME"))+",";
}
}
}

int resultmapSize=resultmap.size();
for(int i=0;i<resultmapSize;i++){
if(i==resultmapSize-1){
resultmap.remove(resultmap.size()-1);
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("STARTTIME", reservestart);
map.put("ENDTIME", reserveend);
resultmap.add(map);
break;
}
resultmap.remove(i);
}
       return resultmap;
}
/**
* 判断项目参与人员时间是否存在冲突
* @param starttime
* @param endtime
*/
public void isConflict(String starttime,String endtime) {
String[] starttimearr=starttime.split(",");
String[] endtimearr=endtime.split(",");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
   String tempholiday="";
   try {
    //对预订开始时间进行排序
for(int i=starttimearr.length-1;i>=0;i--){
for(int j=0;j<i;j++){
Date dt1 = df.parse(starttimearr[j]);
           Date dt2 = df.parse(starttimearr[j+1]);
           if (dt1.getTime() > dt2.getTime()) {
tempholiday = starttimearr[j];
starttimearr[j] = starttimearr[j+1];
starttimearr[j+1] = tempholiday;
}
}
}
tempholiday="";
//对预订结束时间进行排序
for(int i=endtimearr.length-1;i>=0;i--){
for(int j=0;j<i;j++){
Date dt1 = df.parse(endtimearr[j]);
           Date dt2 = df.parse(endtimearr[j+1]);
           if (dt1.getTime() > dt2.getTime()) {
tempholiday = endtimearr[j];
endtimearr[j] = endtimearr[j+1];
endtimearr[j+1] = tempholiday;
}
}
}
//判断当前项目参与人员是否存在多条数据
if(starttimearr.length>1){
//循环预订开始时间   判断下一条的开始时间是否小于上一条输入的结束时间   如果存在   则前端抛出当前项目参与人员错误信息
for(int i=0;i<starttimearr.length;i++){
if((i+1)<starttimearr.length){
Date dt1 = df.parse(starttimearr[i+1]);
       Date dt2 = df.parse(endtimearr[i]);
       if (dt1.getTime() <= dt2.getTime()) {
        msgList.add("请检查当前项目参与人员与之前预订开始结束时间是否存在交叉");
        break;
       }
}
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值