java web开发过程中出现的一些诡异有关问题(2)
java web开发过程中出现的一些诡异问题(2)
企业里面基本上是用jquery,但是并不是所有的地方都用jquery,比如你只要实现个小小的功能,可能就不需要引入整个jquery的js依赖
接着上一篇博客:http://hw1287789687.iteye.com/blog/2053907
(1)我们上周做一个web项目,修改bug后发增量包(补丁包),其实我喜欢发全量包,但是领导要求增量包(补丁包),没办法.
有次发增量包(补丁包),修改了一个常量类,发布后,仍然测出问题.纳闷:明明修改了常量类啊.反编译常量类,确实是修改过之后的,没问题.那么问题出在哪儿呢?
给大伙儿重现一下:
我这里有两个类
public class Constant { public static final String WHO="黄威"; public static final int AGE=26; } public class Hello{ public static void main(String[]args) { System.out.println("Hello,"+Constant.WHO); } }
在命令行中进行编译:
运行:
然后我发一个增量包:只修改Constant类,修改Constant类的WHO变量:
public class Constant { public static final String WHO="黄威22222222222222"; public static final int AGE=26; }
单独编译Constant:,然后运行Hello:
奇怪!!!为什么结果没有变呢?
预期的结果应该是:
Hello,黄威22222222222222
原因是:对于含有常量的类,javac编译时直接把常量的值替换进去了.
所以我们还得重新编译Hello:
测试代码见附件
(2)对于js动态增加的表格tr,IE浏览器不识别
我使用如下代码动态增加表格的行(tr):
var queryResultTable_obj=getTable(); dataLength=tableContent.length; for(var i=0;i<dataLength;i++){ var oneTr=tableContent[i]; //alert(oneTr.realName); var newTr = document.createElement("tr"); var newTd0 = document.createElement("td"); var newTd1 = document.createElement("td"); var newTd2 = document.createElement("td"); var newTd3 = document.createElement("td"); var newTd4 = document.createElement("td"); newTd0.innerHTML =oneTr.realName; newTd1.innerHTML =oneTr.email; newTd2.innerHTML =oneTr.aaa; newTd3.innerHTML =oneTr.bbb; newTd4.innerHTML ="<a target='_blank' href=\""+"../mgmt/personDetail.action?realName="+oneTr.realName+"&email="+oneTr.email+"&query_time="+query_time+"\" >签到详情</a>" newTr.appendChild(newTd0); newTr.appendChild(newTd1); newTr.appendChild(newTd2); newTr.appendChild(newTd3); newTr.appendChild(newTd4); queryResultTable_obj.appendChild(newTr); }
在IE中使用queryResultTable_obj.rows.length 获取表格行的个数时竟然是0,但是在火狐和谷歌浏览器中都没有问题.
说明:queryResultTable_obj 是表格对象
那么在IE中如何获取表格的行(tr)呢?
通过 var trs=queryResultTable_obj.getElementsByTagName("tr");//获取表格所有的行tr
如何动态删除表格的所有行(除了表头)呢?
//判断是否是IE浏览器 var userAgent = navigator.userAgent.toLowerCase(); var browser=navigator.appName; var b_version=navigator.appVersion; //var version=b_version.split(";"); //var trim_Version=version[1].replace(/[ ]/g,"");//firefox error var isIE9test=userAgent.indexOf("windows nt ")>0&&userAgent.indexOf("trident")>0&&browser=="Microsoft Internet Explorer"; //删除行 function deleteRow(){ var queryResultTable_obj=getTable(); if(isIE9test){//如果是IE浏览器 var trs=queryResultTable_obj.getElementsByTagName("tr");//获取表格所有的行tr for(var i=1;i<trs.length;){ var trOne=trs[i];//表格的每一行 queryResultTable_obj.removeChild(trOne);//从表格中删除tr } }else{ var length= queryResultTable_obj.rows.length ; //表格最后一行索引 while(length > 1){ length--; if(length<1){ break; } queryResultTable_obj.deleteRow(length); } } }
1 楼
502220545
前天
诺诺的问一句: 什么是增量包 什么是全量包啊 能举个例子吗
2 楼
hw1287789687
前天
全量包就是整个web项目,比如 xxx.war.
增量包只包含修改的类(class文件)和资源文件
增量包只包含修改的类(class文件)和资源文件
3 楼
weijiewell
前天
public static final 类型的,编译器在编译的时候是按常量处理的。
修改这种类型的值,所有引用过的该类的class文件都要替换。否则相当于没变。
真正需要经常修改的最好用配置文件,不建议使用这种public static final类型
修改这种类型的值,所有引用过的该类的class文件都要替换。否则相当于没变。
真正需要经常修改的最好用配置文件,不建议使用这种public static final类型
4 楼
houyujiangjun
前天
IE要使用Tbody...
5 楼
freezingsky
昨天
增量包,看了才知道,其实说到底就是一个补丁包,晕。另外,对于IE的一些代码操作,我以为现在都是用jquery来提高开发效率的。。。。
6 楼
linginfanta
昨天
用法 很怪异
7 楼
hw1287789687
昨天
freezingsky 写道
增量包,看了才知道,其实说到底就是一个补丁包,晕。另外,对于IE的一些代码操作,我以为现在都是用jquery来提高开发效率的。。。。
企业里面基本上是用jquery,但是并不是所有的地方都用jquery,比如你只要实现个小小的功能,可能就不需要引入整个jquery的js依赖