情形一:地址栏简洁明了(列表页面需要局部查询,分页) 

  页面初始化:library方法,没有任何过滤条件,显示第一页;

页面刷新:library方法,page依旧保留,在地址栏中显示,但局部查询条件会清空(地址栏中不存在);

点击页面刷新:进入search方法,page以后缀传递到 library中对应的局部条件借助 RedirectAttributes 用map传递到 library中;

局部查询:点击查询进入search方法,page清空(另一角度考虑条件不同,分页重新构建也算合理);

  1. /** 供应商库 */
  2. @RequestMapping("/library")
  3. @SuppressWarnings("unchecked")
  4. public String library(HttpServletRequest request, ModelMap model, @RequestParam(value = "page", required = false, defaultValue = "1") Integer page) {
  5. Map<String, Object> map = new HashMap<String, Object>();
  6. if (model.containsKey("map")) {
  7. map = (Map<String, Object>) model.get("map");
  8. model.addAllAttributes(map);
  9. model.remove("map");
  10. }
  11.  
  12. model.addAttribute("moneys", dictRangeService.queryForListByType("MONEY"));
  13. model.addAttribute("areas", dictService.queryDictByType("AREA"));
  14. model.addAttribute("states", CompanyStateEnum.values());
  15. map.put("putinState", 1);
  16. model.addAttribute("page", companyService.queryLibraryForListByPage(page, 10, map));
  17.  
  18. return "/epurchaser/supplier/library";
  19. }
  20.  
  21. /**
  22. * 供应商库 查询
  23. */
  24. @RequestMapping("/search")
  25. public String search(HttpServletRequest request, RedirectAttributes attr, @RequestParam(value = "page", required = true, defaultValue = "1") Integer page) {
  26. Map<String, Object> map = new HashMap<String, Object>();
  27. Set<String> keys = request.getParameterMap().keySet();
  28. for (String key : keys) {
  29. if (StringUtils.isNotEmpty(request.getParameter(key))) {
  30. map.put(key, request.getParameter(key));
  31. }
  32. }
  33.  
  34. attr.addFlashAttribute("map", map);
  35. return "redirect:/pur/supplier/library?page="+page;
  36. }

情形二:公共方法进入到一个页面,但要通过具体业务进行区分开来单独业务处理(图片上传业务,通过图片上传服务器处理好,统一的入口接收,分发到对应的业务中); 

  1. @GetMapping("/upload/save")
  2. public @ResponseBody Object save(HttpServletRequest request, RedirectAttributes attr, @RequestParam Integer type) throws ParseException {
  3. String name = request.getParameter("name");
  4. String picture = request.getParameter("picture");
  5. ...
  6. if (StringUtils.isBlank(name) || StringUtils.isBlank(picture)) {
  7. return new ApiResult<Object>(MsgCons.C_600, "名称和图片不能为空");
  8. }
  9. Long companyId = currentUser().getCompanyId();
  10. if (currentUser().getCompanyId() == null) {
  11. return new ApiResult<Object>(MsgCons.C_600, "请先填写基本信息");
  12. }
  13. if (type == 1) { // 1.业务1
  14. ...
  15. attr.addFlashAttribute("entity", entity1);
  16. return new ModelAndView("redirect:/entity1/save");
  17. } else if (type == 2) { //2:业务2
  18. ...
  19. attr.addFlashAttribute("entity", entity2);
  20. return new ModelAndView("redirect:/entity2/save");
  21. } else if (type == 3) { //3:业务3
  22. ...
  23. attr.addFlashAttribute("entity", entity3);
  24. return new ModelAndView("redirect:/entity3/save");
  25. } else if (type == 4) { //4:业务4
  26. ...
  27. return new ModelAndView("redirect:/entity4/save");
  28. } else {
  29. return new ApiResult<Object>(MsgCons.C_600, MsgCons.M_600);
  30. }
  31. return new ModelAndView("redirect:/entity/save");
  32. }
  33.  
  34. @GetMapping("/entity/save")
  35. public @ResponseBody ApiResult<Object> saveEntity(ModelMap model) {
  36. AbstractModel entity = (AbstractModel) model.get("entity");
  37. Boolean isAdd = (entity.getId() == null);
  38. try {
  39. if (entity instanceof Entity1) {
  40. if (isAdd)
  41. entity = service1.insert((Entity1) entity);
  42. else
  43. service1.update((CompanyAptitude) entity);
  44. } else if (entity instanceof Entity2) {
  45. if (isAdd)
  46. entity = service2.insert((Entity2) entity);
  47. else
  48. service2.update((CompanyHonor) entity);
  49. }
  50. } catch (Exception e) {
  51. logger.error(e.getMessage());
  52. return new ApiResult<Object>(MsgCons.C_500, MsgCons.M_500);
  53. }
  54. return new ApiResult<Object>(entity, isAdd == true ? "新增成功!" : "修改成功!");
  55. }

  

java web 中 页面/业务重定向的更多相关文章

  1. java Web中页面跳转方式之重定向和请求转发的区别

    请求转发: request.getRequestDispatcher().forward(); 重定向: response.sendRedirect(); 例如: 请求转发: request.getR ...

  2. java Web中页面跳转方式之请求转发

    1.在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在Servlet01中setAttribute()保存数据在Servlet02中由getAt ...

  3. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  4. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  5. java web中servlet、jsp、html 互相访问的路径问题

    java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...

  6. JDBC在Java Web中的应用

    JDBC在Java Web中的应用 制作人:全心全意 在Java Web开发中,JDBC的应用十分广泛.通常情况下,Web程序操作数据库都是通过JDBC实现,即使目前数据库方面的开源框架层出不穷,但其 ...

  7. java web中路径问题。

    转自:http://blog.csdn.net/liang5630/article/details/38474543 如有侵权,请及时联系本人及时删除 在java web种经常出现 404找不到网页的 ...

  8. Java Web中的mapper,service,controller,model

    Java Web中的mapper,service,controller,model作用分别是:java web中mapper是对象持久化映射层,一般会继承ibatis或者mybatisservive是 ...

  9. Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

随机推荐

  1. Vue 就地复用策略注意事项

    ---template部分 div el-popover(ref="message", placement="top-start", title="标 ...

  2. 51nod1288汽油补给

    考虑当前这个汽油站加的情况. 如果在t以内的范围有一个加油站比当前加油站便宜,那么就只需要加油加到足够开到最近的比自己便宜的加油站. 否则加满. 但是寻找超时 我们可以先加满,找到一个便宜的加油站之后 ...

  3. oracleXE默认的管理员登录用户

    管理员: account:sys@XE as sysdba     pwd:sys sys@XE as sysdba             system

  4. 一个在windows电脑上控制比较全的文件夹的设置方式

    一个在windows电脑上控制比较全的文件夹的设置方式: 1.在桌面上创建一个新建文件夹 2.将新建文件夹重命名为  万能控制模式.{ED7BA470-8E54-465E-825C-99712043E ...

  5. 关于edge detecte

    1.注意render Texture 双击render Texture ,要勾选 use viewport dimensions,否则出现边框和模型不合的情况 2.注意edge detecte 的状态 ...

  6. Ad Muncher 目前半价优惠^_^

    优惠地址

  7. 史前埃及(predynastic egypt)

    一个并不复杂的建造发展游戏,却十分有趣 安排工作-收集资源-招募工人-增加生产资源效率or建设科技-招募工人的模式 地表在建设后有明显的变化 同时也可以通过简单的动画展示工人的工作分配

  8. Eclipse js报错问题解决办法

    最近在Eclipse中导入新项目后会发现js报错,但是不影响程序的运行,但是对于程序员的我们来说多少还是比较在意代码前面的红色的X的,有木有??? 上网也查了很多方法,对于其中一种方法表示不能完全解决 ...

  9. C# zedgraph利用另一窗口取得的串口数据绘图

    C# zedgraph利用另一窗口获得的串口数据绘图第一次用zedgraph,非常不熟悉,网上很多内容看的云里雾里... 这个程序主界面接收串口数据,而另外一个窗口进行实时曲线绘图,要怎么样实现for ...

  10. final版——爱阅APP功能说明书

    爱阅APP功能说明书 一.引言 以下内容是final版的功能说明书. 新增功能: 1.WiFi传书 2.书友群跳转 3.网址内部打开 4.设置-->关于爱阅 5.设置-->TXT文本的翻页 ...