`

spring mvc下编辑提交绑定实体的解决方法之一

阅读更多

我们经常需要更新一个实体,这时会有一下两个方法

 

  • 这个方法用于取得现有的实体

@RequestMapping(value = "/{id}/edit", method = RequestMethod.GET)
	public ModelAndView edit(HttpServletRequest request,
			@PathVariable Long id,
			@ModelAttribute Member member) {
		ModelAndView result = handleModelAndView(EDIT);
		
		Template template = templateServ.load(id);
		
		result.addObject("template", template);
		
		return result;
	}
  •  这个方法用于接收修改后的实体
@RequestMapping(value = "/{id}/edit", method = RequestMethod.POST)
	public ModelAndView update(HttpServletRequest request,
			@PathVariable Long id,
			@ModelAttribute("template") @Valid Template template,
			BindingResult bindingResult) throws Exception {
		if(bindingResult.hasErrors()) {//出现错误
		    return handleErrors(bindingResult, NEW);
		}
		ModelAndView result = handleModelAndView(UPDATE);
		
		template = templateServ.load(id);
                //这句是关键
		bind(request, template);
		
		
		templateServ.update(template);
		
		return result;
	}
 但是这个过程当中我发现如果这个实体有一个many-to-one或者one-to-many等实体关联的话,就会丢到这个信息,以至于无法完成更新。


解决方法:
在我的controller中使用的是注释方式,没有继承任何spring的control,但是现在需要继承

MultiActionController

这样,就有了一个bind(HttpServletRequest request, Object ob);的方法。这个方法可以帮助我们从request中绑定我们需要的的实体。
分享到:
评论

相关推荐

    Spring Mvc参数传递例子

    Spring MVC传参是Spring学习中的比较容易混淆的地方,因为传参方式种类多,接受参数种类多,初学者较容易因为不懂HTTP参数传递原理,而摸不着头脑,该篇文章介绍Spring MVC参数绑定的几种方式。

    27 Spring MVC数据绑定InitBinder揭秘慕课专栏1

    背景在使用 SpingMVC 框架的项目中,经常会遇到页面某些数据要转换成类型是 Date、Integer、Double 等的数据绑定到控制器的实体。Sprin

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    specification-arg-resolver:使用Spring MVC和Spring Data JPA过滤数据的替代API

    使用Spring MVC和Spring Data JPA过滤数据的替代API。 可以在我的博客中找到该组件的完整介绍和原始原理: : 。 在此文件中,您可以找到所有当前功能的摘要以及一些API示例。 您还可以查看使用此库的可运行的...

    Spring面试题

    1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3....

    Spring Boot中文文档.rar

    在没有父POM的情况下使用Spring Boot 13.2.3.使用Spring Boot Maven插件 13.3.Gradle 13.4.Ant 13.5.Starters 14.构建您的代码 14.1.使用“默认”包 14.2.找到主应用程序类 15.配置类 ...

    SpringMVC【入门】篇

    请求参数绑定实体类型3. 请求参数绑定集合类型4.自定义类型转换器代码编写细节:怎么通过SpringMVC获取Servlet原生API常用注解?==@RequestParam()====@RequestBody()====@PathVariable()====HiddenHttpM

    springboot参考指南

    开发你的第一个Spring Boot应用 v. 11.1. 创建POM vi. 11.2. 添加classpath依赖 vii. 11.3. 编写代码 i. 11.3.1. @RestController和@RequestMapping注解 ii. 11.3.2. @EnableAutoConfiguration注解 iii. 11.3.3. ...

    java面试题

    Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...

    电子商城系统设计实习报告.doc

    Spring MVC优点: 对Spring MVC覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理;与许多表示层技术/框架无缝集 成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等。便于测试...

    Grails权威指南

    第1章 寻找grails之旅  1.1 java的困惑  1.2 webc2.0时代  1.3 java的力量  1.4 什么是grails  1.4.1 与java集成  1.4.2 简单而强大  1.4.3 吸取的经验教训  1.5 使用grails的原因 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...

    领域驱动设计与模式实战

    第一部分 背景知识 第1章 应重视的价值,也是对过去几年的沉重反思 1.1 总体价值 1.2 应重视的架构风格 1.2.1 焦点之一:模型 1.2.2 焦点之二:用例 1.2.3 如果重视模型,就可以使用领域模型模式 1.2.4 慎重处理...

    asp.net知识库

    asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型打造可复用的抽象工厂 泛型技巧系列:如何提供类型参数之间的转换 .NET 2.0 ...

    单点登录源码

    - 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

Global site tag (gtag.js) - Google Analytics