构建用户友好的web软件之删除数据

本文介绍了一种通过弹窗实现的网页删除操作优化方案,利用JS辅助类简化代码,确保删除后能正确刷新当前页面,避免复杂的请求参数处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是一个列表界面,如下图所示

点删除链接,如果删除成功,则直接刷新本页面,如果删除失败,则如下图所示,弹出提示框
这个列表页面,也许是由很多查询条件查询出的结果,而且可能进行了分页,删除成功后,要仍然返回这个页面。方法有两个
1.在request保存查询参数,再查询一次,得到这个页面,
2.利用javascript刷新页面,
对于第一种方式,因为参数较多,编程很麻烦,而且影响性能,代码不能重用,每个列表页面都要写一次
对于第2种方式,可以利用弹出窗口,巧妙的实现这样的效果
,这里假设我处理删除的是DeleteAction,主键为id
一. 删除链接
   <a  href="#"  onclick="window.open('DeleteAction.do?id=9527')"> 删除</a>
二.DeleteAction
  execute()方法代码如下:
public ActionForward execute()
ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response){
   String message = null;  //返回错误信息
 
   Manager manager=new Manager();//删除数据的业务逻辑类
  if(!manager.delete(id)){//如果删除失败
     message="删除失败!";
  }
  if(message ==mull){
        JSDeleteHelper.closeAndRefresh();
   }else{
       JSDeleteHelper.closeAndAlert(response, message);
  }
}
三.JSDeleteHelper帮助类
public class JSDeleteHelper{
//关闭窗口,并弹出提示信息
 public static void closeAndAlert(HttpServletResponse response, String alert) {

  response.setContentType("text/html; charset=GBK");
  PrintWriter out = null;
  try {
   out = response.getWriter();
  } catch (IOException e) {
   e.printStackTrace();
  }
  out.write("<script language='javascript'>");
  out.write("window.alert('" + alert + "!');window.close();");
  out.write("</script>");
 }
//关闭窗口,并刷新父窗口
public static void closeAndRefresh(HttpServletResponse response, String alert) {

  response.setContentType("text/html; charset=GBK");
  PrintWriter out = null;
  try {
   out = response.getWriter();
  } catch (IOException e) {
   e.printStackTrace();
  }
  out.write("<script language='javascript'>");
  out.write("window.opener.location.reload();window.close();");  
  out.write("</script>");
 }

}
当然这样还有很多冗余代码,我们可以抽象一个DeleteBaseAction基类,把判断message的代码放到基类中,这样子类继承DeleteBaseAction,子类的代码就非常干净整洁了
DeleteBaseAction:类代码如下:
 public ActionForward execute(
ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
 String message = executeLogic(mapping,form,request,response); //调用execute方法,这个方法由子类实现
 if(message ==mull){
        JSDeleteHelper.closeAndRefresh();
   }else{
       JSDeleteHelper.closeAndAlert(response, message);
  }
//抽象方法,子类实现这个方法,加入业务逻辑
public abstract String executeLogic(
 ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值