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(); // 只调用一次
  • 相关阅读:
    Teamwork[HDU4494]
    The Parallel Challenge Ballgame[HDU1101]
    「JSOI2016」无界单词
    「SCOI2015」小凸玩密室
    #3636. IIIDX(iiidx)
    #2652. 背单词(word)
    「JXOI2017」加法
    拙者
    19.10.01 acm E:Lowest Common Ancestor
    #3391. big
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/7363902.html
Copyright © 2011-2022 走看看