实际操作企业级项目遇到的问题
1.所有通过get方法得到的值,如果要进行下一步操作,需进行是否为空判断
2.一般数据类型的List、Map添加数据时,需要进行初始化
3.注意判断数据类型相等的判断方法,字符串用equals()方法
4.去重方法
1 for(int i = 0; i < list.size() - 1; i++){ 2 for(int j = list.size() - 1; j > i; j--){ 3 if (list.get(j).getXxx().equals( 4 list.get(i).getCXxx())){ 5 list.remove(j); 6 } 7 } 8 }
5.double类型数据计算后会丢失精度
6.使用BigDecimal类型的数据计算不用担心精度问题,但需注意BigDecimal类型数据的计算方法。加add,减subtract,乘multiply,除divide
7.使用字符串的substring()方法,可以截取自己需要的部分字符串,注意字符串内的空格也算一个字符
1 String a = "afafagaga"; 2 String b = a.substring(3);//截取从第4个开始的所有字符 3 String c = a.substring(1,5);//截取从第2个到第5个的字符
8.使用字符串的split()方法,可以按指定的分隔符生成一个String类型的数组
1 String a = "asda,asda,dasda,asdasda"; 2 String[] b = a.split(",");
9.遍历Map时,一般使用entrySet()方法,如果除了得到key和value值之外还需要进行操作,可以先得到map的size(),再通过size()--的方法操作
10.日期格式转换
1 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 2 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); 3 Date date = sdf.parse("需要进行转换的日期字符串");//字符串转日期 4 sd.format(date);//日期转换成指定格式,日期转字符串
11.使用List、Map的remove()方法需要注意,每remove一个元素,后面的元素都会向前移动,刚刚移过来的元素没有被读取。一般使用Iterator的remove()方法。
1 Iterator<Investment(list的泛型)> it = list.iterator(); 2 while(it.hasNext()){ 3 Investment item = (Investment) it.next();//类型强转 4 if(!item.getXxx().equals("xxxx")){ 5 it.remove(); 6 } 7 }
还有其他的remove()方法
1 1.倒过来遍历list 2 for (int i = list.size()-1; i > =0; i--) { 3 if (((String) list.get(i)).startsWith("abcde")) { 4 list.remove(i); 5 } 6 } 7 8 2.每移除一个元素以后再把i移回来 9 for (int i = 0; i < list.size(); i++) { 10 if (((String) list.get(i)).startsWith("abcde")) { 11 list.remove(i); 12 i=i-1; 13 } 14 }
12.jsp页面获得下拉框选中值
1 var a = document.getElementById('下拉框的id'); 2 var b = a.options[a.selectedIndex].text;
13.jsp页面下拉框为元素的个数,如有3个元素,下拉框显示1,2,3
1 <select id="periods" name="periods" onchange="pay()"> <%--onchange="pay"为下拉框选择事件 --%> 2 <s:iterator value="itemList" id="itemList" status="sta"> <%-- value值为后台传入的list --%> 3 <option value='<s:property value="#sta.index+1"/>'> 4 <s:property value="#sta.index+1"/> <%-- 如果要显示itemList的属性,value="itemList[#sta.index].xxx" --%> 5 </option> 6 </s:iterator> 7 </select>
14.下拉框选择事件,举例,根据下拉框选择不同,jsp页面显示不同值
1 var a = "复杂逻辑运算"; 2 document.getElementById('要写入值的地方的id').innerHTML = a;
15.获得后台传入jsp页面显示的值
1 var a = document.getElementById('jsp页面有值的地方的id').innerText;
16.隐藏域
jsp页面:
1 <s:hidden name="name"/>
js:
1 //从jsp页面读取 2 var name = document.getElementsByName('name')[0].value; 3 //传值到jsp页面 4 var a = "aaa"; 5 document.getElementsByName('name')[0].value = a; 6 //后台action再创建变量,名为name
17.有复选框,有map,有list,jsp页面循环显示,js遍历map,list
jsp页面:
1 <s:iterator id="map" value="map" status="stas"> 2 <tr height="25px" align="center"> 3 <td><input type="checkbox" id='map[<s:property value="%{#stas.index}"/>]'></td> 4 <td class="x-form-item"><span id='accName<s:property value="%{#stas.index}"/>'><s:property value="key"/></span></td> 5 <td class="x-form-item"><span id='accValue<s:property value="%{#stas.index}"/>'><s:property value="value"/></span></td> 6 <td><select name="saleSelect" id='saleSelect<s:property value="%{#stas.index}"/>'> <%--0%~100%,间隔5%,下拉框 --%> 7 <s:iterator id="sale" value="percentage" status="sta"> 8 <option value='<s:property value="#sta.index+1"/>'> 9 <s:property value="percentage[#sta.index]"/> 10 </option> 11 </s:iterator> 12 </select> 13 </td> 14 </tr> 15 </s:iterator>
js:
1 var sale_count = parseInt(0);//卖出账号选择个数 2 var sale_percents = parseInt(0);//卖出账号比例和 3 var sale_breakflag = false;//卖出账户循环跳出标识 4 var sale_per = []; 5 var sale_name = []; 6 //卖出 7 var map = document.getElementsByName('map'); 8 var num = 0; 9 for(var key in map){ 10 num++; 11 } 12 for(var i = 0; i < num; i++){ 13 if(document.getElementById("map["+i+"]").checked){ 14 sale_count++; 15 var sale = document.getElementById("saleSelect"+i+""); 16 var salePercent_str = sale.options[sale.selectedIndex].text; 17 var salePercent_val = parseInt(salePercent_str.substring(0,salePercent_str.length-1)); 18 var sale_accountName = document.getElementById("accName"+i+"").innerText; 19 if(salePercent_val == 0){ 20 alert(sale_accountName + "-卖出账户比例:不能为0!"); 21 sale_breakflag = true;//表示卖出账户跳出标示 22 return false; 23 } 24 sale_percents = sale_percents + salePercent_val; 25 sale_per.push(salePercent_str); 26 sale_name.push(sale_accountName); 27 } 28 }
遍历list,由于找不到确切方法,本次是通过后台获取list的size(),将size()的值传入jsp,js再获取的方法,遍历与上述map的方法大同小异
18.iframe用法
jsp页面:
1 <div id="iframeDiv" style="background-color: #DFE8F7"> 2 <iframe src="" id="iframe" name="iframe" width="100%" scrolling="no" height="300px" style="background-color: #DFE8F7" frameborder="0">
</iframe> 3 </div>
js:
1 var url = "指向后台的action";//根据实际需要选择是否带参数 2 document.getElementById('iframe').src=url;
19.按钮点击事件,注意return false
1 <td><a href="#" onclick="pay('<s:property value="xxx"/>');return false;" style="text-decoration:underline;">操作</a></td>
浙公网安备 33010602011771号