zoukankan      html  css  js  c++  java
  • springMVC 踩过的坑

    1. 后台持久层Spring Jpa(即hibernate), 前台angularJS(angularJS只接受json串), 在后台使用DTO层对象代替domain(entity)与前台交互时,

     传递的DTO对象中也包含对象,被包含对象也一定是对应domain的DTO, 因为只有DTO可以序列化和反序列化,用作于表现层的传递对象。

    如下:

    public class VehicleAnnualAuditDTO {
    
    	private Long id;
    
    	private Boolean deleted;
    
    	// 关联车辆
    	// 要包含一个其他对象, 类型必须是其对应的DTO类,属性名需要与对应的domain类中的属性名相同,这样自动转化工具比如(ObjectMapper或ModelMapper)能够识别并转化
    	private VehicleDTO vehicle;
    
    	// 年审时间
    	private String annualDate;
    
    	// 办理人姓名
    	 private Staff agent;
    
    	// 备注
    	private String remark;
    
    	public Long getId() {
    		return id;
    	}
    
    	public void setId(Long id) {
    		this.id = id;
    	}
    
    	public Boolean getDeleted() {
    		return deleted;
    	}
    
    	public void setDeleted(Boolean deleted) {
    		this.deleted = deleted;
    	}
    
    	public VehicleDTO getVehicle() {
    		return vehicle;
    	}
    
    	public void setVehicle(VehicleDTO vehicle) {
    		this.vehicle = vehicle;
    	}
    
    	public String getAnnualDate() {
    		return annualDate;
    	}
    
    	public void setAnnualDate(String annualDate) {
    		this.annualDate = annualDate;
    	}
    
    	 public Staff getAgent() {
    	 return agent;
    	 }
    	
    	 public void setAgent(Staff agent) {
    	 this.agent = agent;
    	 }
    
    	public String getRemark() {
    		return remark;
    	}
    
    	public void setRemark(String remark) {
    		this.remark = remark;
    	}
    
    	public VehicleAnnualAuditDTO() {
    		super();
    	}
    
    }



    2. 在编写初始化init函数或者其他函数时:切忌要认清该函数的任务, 不要把初始化变量全写在里面然后每次点击都调用,这样会导致初始化数据归置,应该只调用初始化函数一次:
    例子:(血的教训啊)


    //该函数的主要任务是初始化参数和数据   (*其实该函数取名就不太对,要配置参数就光参数,要刷新数据就刷新数据,怎么还先配置参数在刷新数据,全还在一起了,以后调用肯定出错)
    function initialize() { 
                debugger;
                // 初始化参数
                $scope.one = "hello";
                $scope.filter = {}; // 过滤器
                
                // 分页参数
                $scope.pageSize = [2, 5, 10];
                $scope.pageInfos = {};
                
                // 初始化第一页
                toPage(1, 2, null);
        }   
    // 而我在前台调用的地方却是一个经常点击的事件, 该事件其实只需要获取数据
    ,而我却调用了上面这个方法,导致每次调用参数都会归置
    <uib-tabset active="1" justified="true">
              <uib-tab index="0" heading="汽车" th:include="vehicle/info/templates::car" select="initialize()">汽车</uib-tab> //select是一个经常点击的事件,我调用的方法应该只包含数据的刷新而不包含参数
              <uib-tab index="1" heading="工作车" th:include="vehicle/info/templates::workingCar" select="toWorkingCar()">工作车</uib-tab>
              <uib-tab index="2" heading="可用车辆" th:include="vehicle/info/templates::vehicleAvailable" select="toVehicleAvailable()">可用车辆</uib-tab>
          </uib-tabset>

    正确的做法是:

    $scope.toVehicleAvailable = function() { //在调用的方法中只处理数据的更新,在参数配置放在另一个函数中
                initAvailableVehicle();
            };
    
    function initialGanttConfig() { // 专门预处理参数的方法,确保该方法只走一次而不是每次带年纪都走,那样参数每次都重新赋值岂不是权利乱套了全
                // 初始化gantt图配置
                $scope.headersFormats = {
                        'year': 'YYYY年',
                        month: 'YYYY年-MM月',
                        week: '第w周',
                        day: 'DD',
                        hour: 'HH:',
                        minute: 'HH:mm',
                        second: 'H:mm:ss',
                    };
                $scope.fromDate = dateService.getMonday();// gantt图开始日期:当前周的周一
                $scope.toDate = dateService.getSunday();// gantt图截止日期:当前周的周末
                // 监听日期变化
            };
            initialGanttConfig(); // 只调用一次
  • 相关阅读:
    编程语言 编译型语言与解释型语言及汇编语言
    Alpha冲刺2
    事后诸葛亮
    Alpha阶段项目复审
    PostgreSQL的表膨胀与Vacuum和Vacuum Full
    PostgreSQL查看表膨胀(对所有表进行膨胀率排序)
    python中from __future__ import division/print_function的用法
    【IT企业笔试集】2013年阿里巴巴实习生招聘笔试题目及解答
    【WPF编程】一个未完成的12306本地客户端的源代码
    【深入理解计算机系统第二版】3.55习题
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/7363902.html
Copyright © 2011-2022 走看看