基于SSM的商贸平台项目(第七天)

1.新的设计方式:打断设计

在表中增加一个字段,这个字段用来存储关联表的主键集合;在报运业务中要查询合同下的货物信息。直接通过这个关联字段,利用in子查询直接去查询货物表,这样查询效率提高很多。而且数据量越大,查询效率越高。这种方式,业务关联层级越多,这种设计方式的性能体现越高。而且通过这种方式可以实现跳跃查询。

2.在jsp页面动态增加表格

##2.1动态表格:
innerHTML 实现往一个区域div增加一段html代码,

table,tr,td都用利用js动态插入

Alt text

/*实现动态增加一行*/
function addTRRecord(objId, id, productNo, cnumber, grossWeight, netWeight, sizeLength, sizeWidth, sizeHeight, exPrice, tax) {

    var _tmpSelect = "";
    var tableObj = document.getElementById(objId);        //得到表格对象
    var rowLength = tableObj.rows.length;                //获取行的长度

    oTR = tableObj.insertRow();                            //新增一行

    oTD = oTR.insertCell(0);                            //新增单元格,下标从0开始
    oTD.style.whiteSpace="nowrap";
    oTD.ondragover = function(){this.className="drag_over" };    //动态加事件, 改变样式类
    oTD.ondragleave = function(){this.className="drag_leave" };
    oTD.onmousedown = function(){ clearTRstyle("result"); this.parentNode.style.background = '#0099cc';};    
    //this.style.background="#0099cc url(../images/arroww.gif) 4px 9px no-repeat";
    oTD.innerHTML = "  ";    
    oTD = oTR.insertCell(1);
    oTD.innerHTML = "<input class=\"input\" type=\"checkbox\" name=\"del\" value=\""+id+"\"><input type=\"hidden\" name=\"mr_id\" value=\""+id+"\"><input class=\"input\" type=\"hidden\" id=\"mr_changed\" name=\"mr_changed\">";
    oTD = oTR.insertCell(2);
    oTD.innerHTML = "<input class=\"input\" type=\"text\" name=\"mr_orderNo\" readonly size=\"3\" value=\"\">";
    oTD = oTR.insertCell(3);
    oTD.innerHTML = "<b><font face='微软雅黑'><font color='blue'>"+productNo;+"</font></font></b> "
    oTD = oTR.insertCell(4);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_cnumber\" maxLength=\"10\" value=\""+cnumber+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(5);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_grossWeight\" maxLength=\"10\" value=\""+grossWeight+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(6);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_netWeight\" maxLength=\"10\" value=\""+netWeight+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(7);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeLength\" maxLength=\"10\" value=\""+sizeLength+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(8);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeWidth\" maxLength=\"10\" value=\""+sizeWidth+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(9);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeHeight\" maxLength=\"10\" value=\""+sizeHeight+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(10);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_exPrice\" maxLength=\"10\" value=\""+exPrice+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";
    oTD = oTR.insertCell(11);
    oTD.innerHTML = "<input type=\"text\" name=\"mr_tax\" maxLength=\"10\" value=\""+tax+"\" onBlur=\"setTRUpdateFlag(this);\" size=\"15\">";

    dragtableinit();    //拖动表格行
    sortnoTR();            //排序号

}    

##2.2修改新增的字段

  1. 页面上使用同名框,reqest.getParameterValues(),形成一个Sring数组
  2. Struts2框架封装为可以根据它的类型数组,改造ModelDriver
    字符类型,将多个值拼接成一个字符串,之间用逗号+空格隔开
    整形、浮点型、日期等,只保留第一个
  3. Springmvc框架封装为数组,在方法调用参数上声明
    字符类型,将多个值拼接成一个字符串,之间用逗号隔开
    整形、浮点型、日期等,只保留第一个