2014java基础笔记

String.split(".")为null问题

“.”是正则表达式里面的关键字,因此这里会出错。
解决方法:用StringTokenizer替换
java.util.StringTokenizer token = new java.util.StringTokenizer(String,".");
token.nextToken()

获取3位数字,前面补零

       int youNumber = 1;      
        // 0 代表前面补充0      
        // 3 代表长度为3      
        // d 代表参数为正数型      
        String str = String.format("%03d", youNumber);      
        System.out.println(str); // 0001  
<h2>数字格式化</h2><p>java.text.NumberFormat</p><p>示例:</p><p>NumberFormat NumFmt = NumberFormat.getInstance();</p><p>NumFmt.setMaximumFractionDigits(0);</p><p>NumFmt.setMinimumIntegerDigits(2);</p><p>System.<span style="color:rgb(0,0,192);">out</span>.println(NumFmt.format(80934.234));<span style="color:rgb(63,127,95);">//80,934</span></p>

将前台JSON对象发送给后台

页面js:

XControl.ruleGroup.rules = {
        id:4,
        officeId:"can911",
        airCode:"cx",
        channels:[{
            channel: 'User list',
        groupId: 4,
        rules: [
        {id: 1, channel: 'Anne'},
        {id: 2, channel: 'Amelie'}
    ]},{
        channel: 'User list',
        groupId: 4,
        rules: [
        {id: 1, channel: 'Anne'},
        {id: 2, channel: 'Amelie'}
    ]}]};

//将JSON数组格式化,这一步是必要的

var xControlVO = JSON.stringify(XControl.ruleGroup.rules);
    //特殊符号保存不了问题
    var result = "";
    for(var i=0;i<xControlVO.length;i++){
        if(xControlVO.charAt(i)=="+"){
            result += "%20";
        }else if(xControlVO.charAt(i)=="/"){
            result += "%2F";
        }else if(xControlVO.charAt(i)=="?"){
            result += "%3F";
        }else if(xControlVO.charAt(i)=="%"){
            result += "%25";
        }else if(xControlVO.charAt(i)=="#"){
            result += "%23";
        }else if(xControlVO.charAt(i)=="&"){
            result += "%26";
        }else{
            result += xControlVO.charAt(i);
        };
    } 
//发送post请求
$.post("/iControl/Control/xControl/saveOrUpdate.action", { xControlVO:xControlVO }, function (data) {  
            alert(data);  
        });  

后台:

利用jackson的ObjectMapper实现对象的转化

@Write(type = WriteType.JSON)
    @Action(value = "saveOrUpdate")
    public JSONObject saveOrUpdate(@Params(key="xControlVO") String xControlVO){
        try {
            ObjectMapper mapper = new ObjectMapper();  
            XControlVO vo = mapper.readValue(xControlVO,XControlVO.class);//转成map  
            xControlService.saveORupdate(vo);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

js判断值是不是undefined

if (typeof(reValue) == "undefined") {
   alert("undefined");
}

js克隆数组和对象

/**
 * 克隆数组
 */
Utils.cloneArray = function(arrayObj) {
    var array = new Array();
    for (var i = 0, l = arrayObj.length; i < l; i++) {
        array.push(Utils.cloneObj(arrayObj[i]));
    }
    return array;
}

/**
 * 克隆对象
 */
Utils.cloneObj = function (obj) {
    var objClone = null;
    if (obj.constructor == Object) {
        objClone = new obj.constructor();
    }else {
        objClone = new obj.constructor(obj.valueOf());
    }
    for (var key in obj) {
        if (objClone[key] != obj[key]) {
            if (typeof (obj[key]) == 'object') {
                if (obj[key] instanceof Array) {
                    objClone[key] = Utils.cloneArray(obj[key]);
                }else{
                    objClone[key] = Utils.cloneObj(obj[key]);
                }
            }else {
                objClone[key] = obj[key];
            }
        }
    }
    objClone.toString = obj.toString;
    objClone.valueOf = obj.valueOf;
    return objClone;
}


监听Ctrl键按下释放:

$("body").keydown(function (event1) {
        try {
            var key = event1.which;
            if (key == 17) {
              //todo
            }
        }catch(err){}
    });
    $("body").bind('keyup',function (event) {
        try {
            var key = event.which;
            if (key == 17) {
                //todo
            }
        }catch(err){}
    });


1Oracle时间数据保存,后天看到只保存年月日,没有日分秒,因此排序的时候不能准确排序

解决:

1.1 数据库将该字段格式改为TimeStamp类型

1.2 @Temporal(TemporalType.TIMESTAMP)  

@Column(name = "LAST_MODIFIED_TIME", length = 7)

public Date getLastModifiedTime() {

return this.lastModifiedTime;

}

 

public void setLastModifiedTime(Date lastModifiedTime) {

this.lastModifiedTime = lastModifiedTime;

}

2String key=””; //拼接失败,此字符串为空或者空白不能拼接

for(String city:citys){

key.concat(city);

}

for(String date:dates){

key.concat(date);

}

key = key.concat(airCompany);

修改为:

StringBuffer sbf = new StringBuffer();// 拼接qte缓存的key

for (String tempCity : citys) {

sbf.append(tempCity);

}

for (String tempDate : dates) {

sbf.append(tempDate);

}

String key = sbf.toString();

key = key.concat(airCompany);

3、查询结果大小

BigDecimal rowCount = (BigDecimal) query.uniqueResult();

return rowCount.intValue();

代替:int size = query.list().size();

return size;

3、存储过程操作

public Long copyAirline(Long airLineId) {

Connection conn=null;

CallableStatement cstmt=null;

try {

JdbcTemplate jdbcTemplate=this.getJdbcTemplate();

conn=jdbcTemplate.getDataSource().getConnection();

String spName="{call sp_copy_policy_airline(?,?)}";  

cstmt=conn.prepareCall(spName);  

cstmt.setLong(1, airLineId);

cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.NUMBER);

cstmt.execute();

return cstmt.getLong(2);

catch (Exception e) {

e.printStackTrace();

log.error(e, e);

}finally{

try {

if(conn!=null){

conn.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

return null;

}

存储SQL,复制存储过程思想,先将需要复制的数据copy到临时表,更新临时表的主键、外键及需要更新的信息,再将临时表数据插入原始表

create or replace 

procedure sp_copy_policy_airline(airlineid in number,newairlineid out number) is

  v_airlineid number;

Begin

  v_airlineid :=SEQ_POLICY_AIRLINES.NEXTVAL;序列的下一个值

  insert into IFL_POLICY_AIRLINES_COPY (select G.*,v_airlineid from IFL_POLICY_AIRLINES G where G.POLICY_AIRLINE_ID = airlineid);

  commit;

 --更新各表外键

  update IFL_POLICY_AIR_PARTS_COPY COPYH set policy_airline_id = (select newId from IFL_POLICY_AIRLINES_COPY COPYG where COPYH.policy_airline_id =COPYG.policy_airline_id and rownum <= 1);  

--更新各表主键

  update IFL_POLICY_AIR_PARTS_COPY set AIR_PART_ID = newId;

--将复制表中的信息插入到原始表

  insert into IFL_POLICY_AIRLINES (POLICY_AIRLINE_ID,AIRLINE_CODE,POLICY_ID,TAKEOFF_AIRPORTS,ARRIVE_AIRPORTS,FROM_IS_OJ,TO_IS_OJ,TIME_OFFSET,TCODE,

    CLAUSE_ID,CLAUSE_CODE,ALLOW_STOPOVERS,STOPOVERS_TYPE,ALLOW_FLIGHT,NOT_ALLOW_FLIGHT,ALLOW_SHARE_FLIGHT,IS_MARRIAGE,GO_STOPOVERS_TIME,GO_STOPOVERS_FEES,

    GO_STOPOVERS_FEES_UNIT,GO_FREE_STOPOVERS_TIME,BACK_STOPOVERS_TIME,BACK_STOPOVERS_FEES,BACK_STOPOVERS_FEES_UNIT,BACK_FREE_STOPOVERS_TIME,GO_ALLOW_TIME,

    BACK_ALLOW_TIME,GO_NOT_ALLOW_TIME,BACK_NOT_ALLOW_TIME,TAKEOFF_AREA_TYPE,ARRIVE_AREA_TYPE,START_POINT_CODE,FINISH_POINT_CODE,AIRLINETYPE)

    select POLICY_AIRLINE_ID,AIRLINE_CODE,POLICY_ID,TAKEOFF_AIRPORTS,ARRIVE_AIRPORTS,FROM_IS_OJ,TO_IS_OJ,TIME_OFFSET,TCODE,CLAUSE_ID,CLAUSE_CODE,

    ALLOW_STOPOVERS,STOPOVERS_TYPE,ALLOW_FLIGHT,NOT_ALLOW_FLIGHT,ALLOW_SHARE_FLIGHT,IS_MARRIAGE,GO_STOPOVERS_TIME,GO_STOPOVERS_FEES,GO_STOPOVERS_FEES_UNIT,

    GO_FREE_STOPOVERS_TIME,BACK_STOPOVERS_TIME,BACK_STOPOVERS_FEES,BACK_STOPOVERS_FEES_UNIT,BACK_FREE_STOPOVERS_TIME,GO_ALLOW_TIME,BACK_ALLOW_TIME,

GO_NOT_ALLOW_TIME,BACK_NOT_ALLOW_TIME,TAKEOFF_AREA_TYPE,ARRIVE_AREA_TYPE,START_POINT_CODE,FINISH_POINT_CODE,AIRLINETYPE from IFL_POLICY_AIRLINES_COPY;

update IFL_POLICY_FILES D set LAST_MODIFIED_TIME = SYSDATE() where D.policy_Id = (select G.policy_Id from IFL_POLICY_AIRLINES G where G.policy_airline_id = airlineid);

newairlineid := v_airlineid;

commit;

DELETE FROM IFL_POLICY_AIRLINES_COPY;

commit;

end;

4Oracle 正则表达式函数-REGEXP_REPLACE

需要替换掉数据库LIMITE_INFORMATION字段字符串中的owPriceSource的值

{"stayTime1":"","stayTime2":"","owPriceSource":"1520","rtPriceSource":"2600"}

update IFL_POLICY_BUNKS set LIMITE_INFORMATION = regexp_replace(LIMITE_INFORMATION,'"owPriceSource"\s*:\s*"([^\\"]|[\\]["]|([\\][\\]))*"','"owPriceSource":"1234"') where POLICY_BUNK_ID in (:POLICY_BUNK_ID_PARAM)

解决session超时操作有误问题,设置成返回登录页面

//302表示session超时,退回登陆页面
$.ajaxSetup({complete:function(xhr,textStatus){
if (xhr.status == 302) {
window.open(xhr.getResponseHeader("Location"));
}
}});

表单内容重复保存问题

<form id="priceId" method="post">
initEvent:function(){
   $("#priceId"). change(function() {
    $("#priceId").data('changed', true);//from有修改,将状态设成true
    });
}
if($("#priceId").data('changed')){

结束日期大于开始日期验证问题

endDate : {
validator : function(val, param) {
var startDate = $(param[0]).val();
var endDate = $(param[1]).val();
var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;  //日期验证
if(reg.test(endDate)){
endDate = endDate.replace("-", "");
endDate = endDate.replace("-", "");
startDate = startDate.replace("-", "");
startDate = startDate.replace("-", "");
return parseInt(endDate) >= parseInt(startDate);
}else return false;
},
message : "格式不正确、结束日期应应>=开始日期"
},

复制页面不能弹出窗口

var newwindow=window.open("about:blank");//先打开一个空白页,在填充
$.getJSON("/iPolicy/policy/extrapart/saveCopyExtraPartById.action",{extraPartId:selectedId},function(data){
policyTable.reload();
selectedId = data.id;
var url = "edit.html?extraPartId=" + selectedId+"&title=f";
newwindow.location.href=url;
                       newwindow.focus();
                       return false;
   });

防止表单重复提交,思想:提交的时候放入变量,成功的时候去除

success : function(data) {
$this.data("submiting",false); 
if (options.onsuccess) {
options.onsuccess(data);
}
}
$this.submit(function() {
if($this.data("submiting")){
return false;
}

$this.data("submiting",true);
}

文本框或输入框细节,鼠标离开显示”审核通过“,点击消失

 onFocus="if(this.value=='审核通过'){this.value=''}"  

 onBlur="if(this.value==''){this.value='审核通过''}"

列表字段过长,隐藏过长部分,鼠标经过显示全部

startAreaCode=startAreaCode.length>20?startAreaCode.substring(0,20)+"...":startAreaCode;
 "<td title='"+titleEndAreaCode+"'>到达地:"+endAreaCode+"</td>"


你可能感兴趣的:(js,undefined,Jackson,数字前面补零,将前台JSON对象发送给后台,js克隆数组和对象)