您的位置:首页 > 编程语言 > Java开发

2017.5.11工作随笔

2017-05-11 15:41 399 查看
最近实现了一个非常蛋疼的功能,虽然看上去是很简单。但是,页面处理起来非常麻烦,尤其是加上产品部门特殊的那些逻辑。但是现在终于算是弄出眉目了。

简单点来标记一下自己遇到的一些事情吧。

1.分页sql的逻辑问题,

select * from (
select *,rn from (
select * from s
) a where a.rn <= end
) b where b.rn > start


开始页就不要等于了,这样会重复拿到一条数据。

2.c标签的when判断

(1)
<c:when test="${danganBean.isNewMenmber == '1'}">是</c:when>


注意:是放在花括号里面的 ,很容易写成${} == ‘1’这样子。这样是不行的、、

(2)
<c:when test="${item.key eq danganBean.archiveBean.isRejectedUShield}">


再就是做 == 判断。可以使用eq这样。

3.因为我们是使用jersey的方式进行开发的,所以当我前台需要传一个键值对象的时候出问题。

jersey常用的接收参数的方式是

@Path("/updateDanganInfo")
@POST
@Produces(MediaType.APPLICATION_JSON)
public String updateDanganInfo(
@FormParam("moId") Long moId,
@FormParam("busiSituation") String busiSituation,
@FormParam("empYes") String empYes,
@FormParam("installYes") String installYes,
@FormParam("peiheYes") String peiheYes,
@FormParam("agreeInspectYes") String agreeInspectYes,
@FormParam("everyMonthBussinessCounts") String counts,
@FormParam("oneQuota") String oneQuota,
@FormParam("isRejectedUShield") String isRejectedUShield,
@FormParam("receiveUShieldDate") String receiveUShieldDate,
@FormParam("installUshieldDate") String installUshieldDate
){
}


这样也可以但是需要写的很多,想以传bean的形式,网上搜了一下,解决方法是

@XmlRootElement
public Class User{
@FormParam("oneQuota")
String oneQuota;
@FormParam("installUshieldDate")
String installUshieldDat;
}


类似于这样,然后再用;最后选用的方式:

前台把参数对象转成json串,

var paramObj = new Object();
paramObj['mo']=params;


这样后台就@FormParam(“mo”) String param再把拿到的json串解析成map使用就可以了。

4.再就是datatables的后端分页 ;

ajax:function(data, callback, settings){
var param = {};
//组装分页参数
param.startIndex = data.start;
param.pageSize = data.length;
var params = JSON.stringify(param);
var paramObj = new Object(); paramObj['mo']=params;
$.ajax({
type: "POST",
url: "${ctp}/rest/member/load",
cache : false, //禁用缓存
data: paramObj, //传入已封装的参数
dataType: "json",
success: function(result) {
//setTimeout仅为测试延迟效果
setTimeout(function(){
//异常判断与处理
if (result.errorCode) {
//$.dialog.alert("查询失败。错误码:"+result.errorCode);
return;
}
//封装返回数据,这里仅演示了修改属性名
var returnData = {};
returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
returnData.recordsTotal = result.total;
returnData.recordsFiltered = result.total;//后台不实现过滤功能,每次查询均视作全部结果
returnData.data = result.data;
callback(returnData);
},200);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
//$.dialog.alert("查询失败");
//$wrapper.spinModal(false);
}
});
},


这里就不赘述了,主要是这个ajax方法。

5.js的一些琐碎就太多了,像jquery操作select checkbox;parseInt();json字符转对象,对象转字符;数组的遍历,字符串的截取,虽然看似简单,但是用到的时候还是需要重新把握一下。

未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java sql jsp jersey datatables