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>NumberFormatNumFmt=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){}
});
1、Oracle时间数据保存,后天看到只保存年月日,没有日分秒,因此排序的时候不能准确排序
解决:
1.1数据库将该字段格式改为TimeStamp类型
1.2@Temporal(TemporalType.TIMESTAMP)
@Column(name="LAST_MODIFIED_TIME",length=7)
publicDategetLastModifiedTime(){
returnthis.lastModifiedTime;
}
publicvoidsetLastModifiedTime(DatelastModifiedTime){
this.lastModifiedTime=lastModifiedTime;
}
2、Stringkey=””; //拼接失败,此字符串为空或者空白不能拼接
for(Stringcity:citys){
key.concat(city);
}
for(Stringdate:dates){
key.concat(date);
}
key=key.concat(airCompany);
修改为:
StringBuffersbf=newStringBuffer();//拼接qte缓存的key
for(StringtempCity:citys){
sbf.append(tempCity);
}
for(StringtempDate:dates){
sbf.append(tempDate);
}
Stringkey=sbf.toString();
key=key.concat(airCompany);
3、查询结果大小
BigDecimalrowCount=(BigDecimal)query.uniqueResult();
returnrowCount.intValue();
代替:intsize=query.list().size();
returnsize;
3、存储过程操作
publicLongcopyAirline(LongairLineId){
Connectionconn=null;
CallableStatementcstmt=null;
try{
JdbcTemplatejdbcTemplate=this.getJdbcTemplate();
conn=jdbcTemplate.getDataSource().getConnection();
StringspName="{callsp_copy_policy_airline(?,?)}";
cstmt=conn.prepareCall(spName);
cstmt.setLong(1,airLineId);
cstmt.registerOutParameter(2,oracle.jdbc.OracleTypes.NUMBER);
cstmt.execute();
returncstmt.getLong(2);
}catch(Exceptione){
e.printStackTrace();
log.error(e,e);
}finally{
try{
if(conn!=null){
conn.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
returnnull;
}
存储SQL,复制存储过程思想,先将需要复制的数据copy到临时表,更新临时表的主键、外键及需要更新的信息,再将临时表数据插入原始表
createorreplace
proceduresp_copy_policy_airline(airlineidinnumber,newairlineidoutnumber)is
v_airlineidnumber;
Begin
v_airlineid:=SEQ_POLICY_AIRLINES.NEXTVAL;序列的下一个值
insertintoIFL_POLICY_AIRLINES_COPY(selectG.*,v_airlineidfromIFL_POLICY_AIRLINESGwhereG.POLICY_AIRLINE_ID=airlineid);
commit;
--更新各表外键
updateIFL_POLICY_AIR_PARTS_COPYCOPYHsetpolicy_airline_id=(selectnewIdfromIFL_POLICY_AIRLINES_COPYCOPYGwhereCOPYH.policy_airline_id=COPYG.policy_airline_idandrownum<=1);
--更新各表主键
updateIFL_POLICY_AIR_PARTS_COPYsetAIR_PART_ID=newId;
--将复制表中的信息插入到原始表
insertintoIFL_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)
selectPOLICY_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,AIRLINETYPEfromIFL_POLICY_AIRLINES_COPY;
updateIFL_POLICY_FILESDsetLAST_MODIFIED_TIME=SYSDATE()whereD.policy_Id=(selectG.policy_IdfromIFL_POLICY_AIRLINESGwhereG.policy_airline_id=airlineid);
newairlineid:=v_airlineid;
commit;
DELETEFROMIFL_POLICY_AIRLINES_COPY;
commit;
end;
4、Oracle正则表达式函数-REGEXP_REPLACE
需要替换掉数据库LIMITE_INFORMATION字段字符串中的owPriceSource的值
{"stayTime1":"","stayTime2":"","owPriceSource":"1520","rtPriceSource":"2600"}
updateIFL_POLICY_BUNKSsetLIMITE_INFORMATION=regexp_replace(LIMITE_INFORMATION,'"owPriceSource"\s*:\s*"([^\\"]|[\\]["]|([\\][\\]))*"','"owPriceSource":"1234"')wherePOLICY_BUNK_IDin(: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>"
分享到:
相关推荐
java基础笔记整理java基础笔记整理
Java基础 java学习笔记 Java Java基础Markdown学习笔记,可转换成PDF、Word等格式
java基础 在命令行 控制台下的dos命令: 切换盘符 d: 进入某个目录 cd: 查看一个目录下有什么东西:dir 编译时 javac 源文件名 java 运行的时候 java 含有main方法的 类名 注意:不要写 class 公有的 public 的类 其...
java基础笔记关于初学者的笔记 是本人根据初级视频总结的
自学JAVA基础,原创笔记,适合跨专业自学笔记
JAVA基础笔记整合,java基础部分的一些笔记整合,适合初学者。
Java基础班笔记修改
狂神说java系列笔记(java基础+javaweb+ssm+微服务)全套
java基础笔记,内容详细全面,作为小白,基础不好的都很实用,尤其是向自学的,这么好的资源我就拿出来了,都是自己整理的,实用性强。
java基础笔记.pdf
尚硅谷java教程全程跟听,手动整理,从面向对象开始按章节按课时整理,适合对照视频作为笔试使用/java知识脉络梳理/八股理解背诵
龙哥的Java基础笔记大全,可以说是史上最全最生动易懂,不信你就自己来看~
这是java基础部分的笔记,包含了java基础部分的重点和易错部分,对初学java的朋友来说很有帮助
java基础笔记帮助各位初学者来更加快速入门java
Java基础笔记
已整理好基础版和高级版笔记 导出为pdf 和html 格式 界面清晰美观,均有详细目录
毕向东老师java基础课 课堂笔记整理 java各个章节重点 包含部分经典代码
Java基础学习笔记
Java基础学习笔记.doc.初学java的笔记.
java基础知识笔记java基础知识笔记java基础知识笔记java基础知识笔记java基础知识笔记java基础知识笔记