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

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

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

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

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

/** 供应商库 */
@RequestMapping("/library")
@SuppressWarnings("unchecked")
public String library(HttpServletRequest request, ModelMap model, @RequestParam(value = "page", required = false, defaultValue = "1") Integer page) {
Map<String, Object> map = new HashMap<String, Object>();
if (model.containsKey("map")) {
map = (Map<String, Object>) model.get("map");
model.addAllAttributes(map);
model.remove("map");
} model.addAttribute("moneys", dictRangeService.queryForListByType("MONEY"));
model.addAttribute("areas", dictService.queryDictByType("AREA"));
model.addAttribute("states", CompanyStateEnum.values());
map.put("putinState", 1);
model.addAttribute("page", companyService.queryLibraryForListByPage(page, 10, map)); return "/epurchaser/supplier/library";
} /**
* 供应商库 查询
*/
@RequestMapping("/search")
public String search(HttpServletRequest request, RedirectAttributes attr, @RequestParam(value = "page", required = true, defaultValue = "1") Integer page) {
Map<String, Object> map = new HashMap<String, Object>();
Set<String> keys = request.getParameterMap().keySet();
for (String key : keys) {
if (StringUtils.isNotEmpty(request.getParameter(key))) {
map.put(key, request.getParameter(key));
}
} attr.addFlashAttribute("map", map);
return "redirect:/pur/supplier/library?page="+page;
}

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

@GetMapping("/upload/save")
public @ResponseBody Object save(HttpServletRequest request, RedirectAttributes attr, @RequestParam Integer type) throws ParseException {
String name = request.getParameter("name");
String picture = request.getParameter("picture");
...
if (StringUtils.isBlank(name) || StringUtils.isBlank(picture)) {
return new ApiResult<Object>(MsgCons.C_600, "名称和图片不能为空");
}
Long companyId = currentUser().getCompanyId();
if (currentUser().getCompanyId() == null) {
return new ApiResult<Object>(MsgCons.C_600, "请先填写基本信息");
}
if (type == 1) { // 1.业务1
...
attr.addFlashAttribute("entity", entity1);
return new ModelAndView("redirect:/entity1/save");
} else if (type == 2) { //2:业务2
...
attr.addFlashAttribute("entity", entity2);
return new ModelAndView("redirect:/entity2/save");
} else if (type == 3) { //3:业务3
...
attr.addFlashAttribute("entity", entity3);
return new ModelAndView("redirect:/entity3/save");
} else if (type == 4) { //4:业务4
...
return new ModelAndView("redirect:/entity4/save");
} else {
return new ApiResult<Object>(MsgCons.C_600, MsgCons.M_600);
}
return new ModelAndView("redirect:/entity/save");
} @GetMapping("/entity/save")
public @ResponseBody ApiResult<Object> saveEntity(ModelMap model) {
AbstractModel entity = (AbstractModel) model.get("entity");
Boolean isAdd = (entity.getId() == null);
try {
if (entity instanceof Entity1) {
if (isAdd)
entity = service1.insert((Entity1) entity);
else
service1.update((CompanyAptitude) entity);
} else if (entity instanceof Entity2) {
if (isAdd)
entity = service2.insert((Entity2) entity);
else
service2.update((CompanyHonor) entity);
}
} catch (Exception e) {
logger.error(e.getMessage());
return new ApiResult<Object>(MsgCons.C_500, MsgCons.M_500);
}
return new ApiResult<Object>(entity, isAdd == true ? "新增成功!" : "修改成功!");
}

  

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. selenium(五)伪造浏览器

    简介: 这个就比较好玩了,大家还记得以前的QQ小尾巴么?还有百度贴吧的小尾巴,就是那个来自***的iphone7,这个功能. 这个功能是基于浏览器的user-agent功能实现的. 还是httpbin ...

  2. Django(二)创建app,设置相关后台

    location 最后一个文件夹名就是project名,我用了DjangoProject. Application 是自动加入的APP名字,我用了DjangoTest 1.添加APP在pycharm的 ...

  3. Struts2内置校验器——完整实例代码

    一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...

  4. Java——IO类,字符缓冲区

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  5. JS底层知识理解之执行上下文篇

    JS底层知识理解之执行上下文篇 一.什么是执行上下文(Execution Context) 执行上下文可以理解为当前代码的执行环境,它会形成一个作用域. 二.JavaScript引擎会以什么方式去处理 ...

  6. ORACLE telnet 1521 不通及ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的解决

    服务器上安装了oracle11g , 防火墙上已经增加1521 入站规则.但是内网客户端配置好了TNS无法连接.telnet 1521 不通. 需要在服务器上\product\10.2.0\db_1\ ...

  7. js前台数据校验

    1.脚本 Validator = { exp:{ numWord:/^[A-Za-z0-9]+$/, //数字或字母 numWordM:/^[\-]*[A-Za-z0-9]+$/, //数字或字母可为 ...

  8. OO面向对象 课程总结

    测试与正确性论证的效果差差异 测试和正确性论证都是对程序进行可靠性的验证. 测试: IEEE提出了对软件测试的定义:使用人工或者自动的手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求 ...

  9. SPSS教程学习笔记1:K个独立样本秩和检验及多重比较 (转载) (非参数假设检验)

    本文地址:http://www.datasoldier.net/archives/173版权声明:本文为原创文章,版权归 数据小兵 所有,欢迎分享本文,转载请保留出处!     方差分析经常会出现不满 ...

  10. 2018C语言助教总结

    回顾 很荣幸得到各位老师的认可,担任计科3班和4班的C语言课程助教,很感谢车老师和牛老师一学期的帮助,使得我更好的担任助教一职.我班学生59名,很愉快的与同学们度过一个美好的学期,其实作为助教同样从学 ...