您的位置:首页 > 其它

"返回"——查询结果后插入修改完成返回原查询结果页面

2017-07-19 12:37 323 查看
前言:在做查管凭证的过程中,需要查询结果后插入修改完成返回原查询结果页面。之前都是使用ajax调用的,但是继承过来的代码不是静态显示的,而是在js中动态拼接的,所以ajax“失效”了,因此......

1.插入:当从查询页面跳转到插入页面的时候再url路径中加入status标识符进行区别

//插入功能
function insertBtn(date,pz_num){
var token = $("#token").val();
var AccountID = account_id;
var linkurl = "../../finance/voucher/voucheradd.jsp?token="+token+'&cdate='+date+'&pz_num='+pz_num+"&AccountID="+account_id+'&action=insert'+"&state=1";

$.ajax({
url : 'voucherchecklist_saveSession.zm',
type : "POST",
dataType : 'json',
data : {
startperiod:_startperiod,
endperiod:_endperiod,
kmcodename: _kmcodename,
summ:_summ,
accountName:_accountName,
startNum:_startNum,
endNum:_endNum,
kmcode: _kmcode,
accountID:_accountID
},
success : function(data) {
if(data!=null){
window.location.href=linkurl+"&status=1";
}
}
});
}


2.同时在Session中进行保存:因为字符串长度太长cookie不够,且url路径长度也是有所限制的

//将查管list中的信息保存到Session中
public void saveSession(){
HttpSession session = request.getSession();

String _startperiod = request.getParameter("startperiod");
String _endperiod = request.getParameter("endperiod");
String _kmcodename = request.getParameter("kmcodename");
String _summ = request.getParameter("summ");
String _accountName = request.getParameter("accountName");
String _startNum = request.getParameter("startNum");
String _endNum = request.getParameter("endNum");
String _kmcode = request.getParameter("kmcode");
String _accountID = request.getParameter("accountID");

session.setAttribute("voucherchecklist_urlSession","startperiod=" + _startperiod + ":endperiod=" + _endperiod + ":kmcodename=" + _kmcodename + ":summ=" + _summ + ":accountName=" + _accountName + ":startNum=" + _startNum + ":endNum=" + _endNum + ":kmcode=" + _kmcode + ":accountID=" + _accountID);

JSONObject resJson = new JSONObject();
resJson.put("name", "zhangsan");
this.returnAjax(resJson.toString());
}


3.跳转到add.jsp页面中进行status key值的获取

String status=request.getParameter("status");
request.setAttribute("status",status);


4.此时使用el标签进行判断,看是否显示返回按钮

<!-- 返回按钮选择性显示 -->
<c:if test="${not empty status}">
<button class="btnBack btn-success" id="backup" onclick= "backBut()">返回</button>
</c:if>

5.点击返回按钮触发事件

/* 返回按钮:返回路径拼接的url */
function backBut(){
if(status!=null){
window.location.href="../../finance/voucher/voucherchecklist.jsp?token="+token+"&AccountID="+$AccountID+"&state=1";
}
};


6.从url路径上获取state参数,如果有证明是从add.jsp页面返回的

<%
//从url路径红获取stae参数
String state = request.getParameter("state");
HttpSession mySession = request.getSession();
//如果state参数不为空,获取对应的session,分成数组
String voucherchecklist_urlSession = "";
if(state!=null && state.equals("1")){
voucherchecklist_urlSession =(String)mySession.getAttribute("voucherchecklist_urlSession");
}
%>
<input type="text" id="voucherchecklist_urlSession" value="<%=voucherchecklist_urlSession%>"/>


7.如果是从add.jsp页面跳转过来的则从session域中获取对应参数,调用searchData()方法,显示数据到页面

var ss = $("#voucherchecklist_urlSession").val();
if(ss!=null && ss !=""){
var arrSession=ss.split(":");
var startperiodArr = arrSession[0].split("=");
var endperiodArr = arrSession[1].split("=");
var kmcodenameArr = arrSession[2].split("=");
var summArr = arrSession[3].split("=");
var accountNameArr = arrSession[4].split("=");
var startNumArr = arrSession[5].split("=");
var endNumArr = arrSession[6].split("=");
var kmcodeArr = arrSession[7].split("=");
var accountIDArr = arrSession[8].split("=");

searchData(startperiodArr[1],endperiodArr[1],kmcodenameArr[1],summArr[1],accountNameArr[1],startNumArr[1],endNumArr[1],kmcodeArr[1],accountIDArr[1]);
}

}

此时在查询页面显示后点击编辑或插入跳转页面中就会显示返回按钮,同时点击返回按钮又返回到查询页面,而且里面的数据也是最新的。

小结:

其实最开始写的时候发现思路是有的,但是在做的过程中会有一些问题,一方面是cookie session的用途不清楚,另一方面是js jsp java三者之间代码的调用和使用。可能还是对于这些不够熟悉,需要在今后的工作中继续加油。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐