Struts2+veloctiy+ajax实践

Struts2+veloctiy+ajax实践

一、velocity JS代码:

 var floorId = document.getElementById("indexFloor.floorId").value;

        var floorSortNo = document.getElementById("indexFloor.floorSortNo").value;

        var floorIntro = document.getElementById("indexFloor.floorIntro").value;

        var startDate = document.getElementById("indexFloor.startDate").value;

        var endDate = document.getElementById("indexFloor.endDate").value;

        var startTime = document.getElementById("indexFloor.startTime").value;

        var endTime = document.getElementById("indexFloor.endTime").value;

         //校验该时段是否已经定义楼层

        jQuery.ajax({

            type:"post",             url:"/admin/floorcheck/timeCheck/timeCheckForNewIndexFloor.action?floorSortNo="

 + floorSortNo + "&floorId=" + floorId + "&startDate=" + startDate

                    + "&endDate=" + endDate + "&startTime=" + startTime + "&endTime=" + endTime,

            dataType:"text",

            success:function (data) {

                var dataObj=eval("("+data+")");//结果转化为json

                if (dataObj.code=="true") {//根据结果的code来做分支

                    if(flag == false) {

                        flag = true;

                        $("#data_form").submit();

                    }else{

                        alert("已经提交过了,请勿重复提交");

                    }

                } else {

                    alert(dataObj.msg); //提示服务端返回的msg信息

                }

            }

        });

返回值转化为json,对应的key由服务端的action所决定,我们这里action定义的是一个mapmap包含了两个key,一个是code,一个是msg。通过code进行判断,通过msg对客户进行返回

二、Action代码

 private Map<String, String> map = new HashMap<String, String>(); //action里定义一个map,用于返回给客户端   

 public String timeCheckForNewIndexFloor() {

        //初始化request参数

        String floorSortNo = request.getParameter("floorSortNo");

        String floorId = request.getParameter("floorId");

        String startDate = request.getParameter("startDate");

        String endDate = request.getParameter("endDate");

        String startTime = request.getParameter("startTime");

        String endTime = request.getParameter("endTime");

        IndexFloor indexFloor = new IndexFloor();

        indexFloor.setFloorSortNo(Integer.parseInt(floorSortNo));

        if (!StringUtils.isEmpty(floorId)) {  //新增没有id

            indexFloor.setFloorId(Integer.parseInt(floorId));

        }

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {

            indexFloor.setStartDate(dateFormat.parse(startDate));

            indexFloor.setEndDate(dateFormat.parse(endDate));

        } catch (ParseException e) {

            log.error("timeCheckForNewIndexFloor解析日期报错", e);

        }

        indexFloor.setStartTime(Short.valueOf(startTime));

        indexFloor.setEndTime(Short.valueOf(endTime));

        map = floorCheckService.timeCheckIndexFloor(indexFloor);//map包含了返回给客户端的主要信息,包括codemsg

        return "timeCheckForNewIndexFloor";//这里返回方法名

    }

Service方法:

    public Map<String, String> timeCheckIndexFloor(IndexFloor indexFloor) {

        Map<String, String> map = new HashMap<String, String>();

        map.put("code", "true");//初始化

        map.put("msg", "");

         If(XXX) { //具体的业务逻辑部分

                    map.put("code", "false");

                    map.put("msg", "该时间区间与已存在的楼层区间冲突!楼层序号:" + indexFloor1.getFloorSortNo() + ",开始时间:" + oldStartTime + "结束时间:" + oldEndTime);

                    break;

                }           

        return map;

    }

通过以上两步,我们服务端处理了具体的业务逻辑,封装好了返回的信息,交给struts去处理了

三、Struts配置

    <package name="cms-floorcheck-timeCheck" namespace="/admin/floorcheck/timeCheck" extends="json-default"> //注意这里要继承json-default

        <action name="*" class="com.jd.m.cms.web.action.floor.FloorCheckAction" method="{1}">

            <result name="{1}" type="json"> //由于action中返回市是法名,这里也用通配符代替了

                <param name="root">map</param> //这里是关键,把action返回的map映射为json

            </result>

        </action>

    </package>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值