jsp页面信息如何更新
纯小白一枚,大学本科学的硬件,就大一学过C,所以请描述的尽量简单易懂一点。我们工程里用了jsp,java,severlet,action,ajax,请不要用其他方式处理,...
纯小白一枚,大学本科学的硬件,就大一学过C,所以请描述的尽量简单易懂一点。我们工程里用了jsp,java,severlet,action,ajax,请不要用其他方式处理,我连这些都没搞明白T^T
问题:审计员页面上点提交按钮,后台会生成一个流水号,并把此文件的状态置为0,不刷新页面。安全员去操作该流水(把文件的状态置为1或2);但此时审计员并未刷新页面,所以该流水显示的状态依然是0可撤回,点击撤回该流水号就被撤销了,但其实该流水是已经完成了。
我想的解决方式1是获取到这个流水号,因为方法里只能用流水号(主键)获取到文件的状态,前台用ajax传参数到后台,后台已经生成了流水号,该怎么返回前台,我用过request.setAttribute不好使,最后在后台操作后前台能用表达式语言${}获取(如果能讲明白表达式语言是从哪里获取的参数更感激);
解决方式2是在审计员不刷新的情况下点击撤销时先刷新页面,再进行撤销操作;刷新后状态就会变为完成,我用各种reload也不好使,用ajax倒是刷新了,但ajax之后的函数体就无法执行,只能刷新。
如果有更好的方法也请详尽说明,谢谢各位大神了! 展开
问题:审计员页面上点提交按钮,后台会生成一个流水号,并把此文件的状态置为0,不刷新页面。安全员去操作该流水(把文件的状态置为1或2);但此时审计员并未刷新页面,所以该流水显示的状态依然是0可撤回,点击撤回该流水号就被撤销了,但其实该流水是已经完成了。
我想的解决方式1是获取到这个流水号,因为方法里只能用流水号(主键)获取到文件的状态,前台用ajax传参数到后台,后台已经生成了流水号,该怎么返回前台,我用过request.setAttribute不好使,最后在后台操作后前台能用表达式语言${}获取(如果能讲明白表达式语言是从哪里获取的参数更感激);
解决方式2是在审计员不刷新的情况下点击撤销时先刷新页面,再进行撤销操作;刷新后状态就会变为完成,我用各种reload也不好使,用ajax倒是刷新了,但ajax之后的函数体就无法执行,只能刷新。
如果有更好的方法也请详尽说明,谢谢各位大神了! 展开
1个回答
展开全部
我认为,安全员变更文件状态的时候,将生成的流水号、状态存放到session中供以后使用;在审计员点击撤销按钮的时候,用ajax方法先去后台进行判断,后台方法就去session中取获取流水号,状态值进行判断,如果状态已经被安全员修改了(不可以撤销),就给前台返回一个不可撤销的标志,调用ajax的success方法,在方法中可以给客户弹出一个框或者弹出一个隐藏的层,提示客户不能撤销。
我觉得你说的ajax调用之后函数体无法执行,是不是后台没有设置,回调ajax的成功方法,给你一个我的例子(后台操作成功是返回“ok”标志):
ajax方法:
$.ajax({
url : encodeRedirectURL("/rights/telecomCardConfig.do?action=initDelCardNumber"),
type : "POST",
data : {"cardNumberIds":cardNumberIds.toString()},
timeout : 3000,
dataType : 'text',
success : function(data){
if(data == 'ok') {//删除成功
alert("删除成功!");
} else {//
alert("删除失败!");
}
},
error:function() {
alert('删除记录时发生异常!');
}
});
后台处理方法:
public ActionForward initDelCardNumber(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String cardNumberIds = request.getParameter("cardNumberIds");
LinkedHashMap<String, Object> qryMap = new LinkedHashMap<String, Object>();
qryMap.put("cardNumberIds", cardNumberIds);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
PrintWriter pw = response.getWriter();
try {
this.getTelecomCardConfigService().delete_cardNumber(qryMap);
pw.write("ok");
pw.flush();
pw.close();
} catch (Exception e) {
log.error("卡号删除异常:initDelCardNumber",e);
e.printStackTrace();
pw.write("error");
pw.flush();
pw.close();
}
return null;
}
我觉得你说的ajax调用之后函数体无法执行,是不是后台没有设置,回调ajax的成功方法,给你一个我的例子(后台操作成功是返回“ok”标志):
ajax方法:
$.ajax({
url : encodeRedirectURL("/rights/telecomCardConfig.do?action=initDelCardNumber"),
type : "POST",
data : {"cardNumberIds":cardNumberIds.toString()},
timeout : 3000,
dataType : 'text',
success : function(data){
if(data == 'ok') {//删除成功
alert("删除成功!");
} else {//
alert("删除失败!");
}
},
error:function() {
alert('删除记录时发生异常!');
}
});
后台处理方法:
public ActionForward initDelCardNumber(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String cardNumberIds = request.getParameter("cardNumberIds");
LinkedHashMap<String, Object> qryMap = new LinkedHashMap<String, Object>();
qryMap.put("cardNumberIds", cardNumberIds);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
PrintWriter pw = response.getWriter();
try {
this.getTelecomCardConfigService().delete_cardNumber(qryMap);
pw.write("ok");
pw.flush();
pw.close();
} catch (Exception e) {
log.error("卡号删除异常:initDelCardNumber",e);
e.printStackTrace();
pw.write("error");
pw.flush();
pw.close();
}
return null;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询