springMVC使用modelAttribute部分更新

在使用SpringMVC进行更新时候,我们会遇到部分更新的情况。一般情况下我们采用的是把model传到页面,然后把需要修改的字段进行显示。不能修改或者不需要修改的进行隐藏传值。这样做麻烦而且数据安全性也没那么高。SpringMVC modelAttribute就能很好的解决部分字段更新问题。


 1.首先需要在controller中添加一个方法,该方法用@ModelAttribute进行注解如:

       

	
	@ModelAttribute
	public void updateCustomer(@RequestParam(value="uuid",required=false)Integer uuid,Model model){
		if(null != uuid){
		//数据库查询你需要更新的实体
		  CustomerModel customerModel = iCustomerService.getByUuid(uuid);
		   model.addAttribute("cm", customerModel);
		}
	}
	
其中uuid为你更新字段的主键,required设置为false。因为被ModelAttribute注解的方法会在所有@requestMapping注解的方法前运行。注:此处的更新请求我不能进行url/uuid的方式进行请求。因为我无法设置@PathVariable注解的字段为飞必须。这里源码还不是很清楚。所以我无法解决。只能进行url?uuid方式请求!

然后将数据库查询的实体放入model中。以便前台显示。

此时前台更新页面则不需要隐藏不需要更新的字段。如:

<tr>
			<td>显示名称</td>
			<td><input type="text" name="showName" value="${cm.showName}" class="input"></td>			
			<td>真实姓名</td>
			<td><input type="text" name="trueName" value="${cm.trueName}" class="input"></td>
		</tr>	
这是部分代码。ID 密码都不进行隐藏传值。当请求发送到update方法:

@RequestMapping(value="update", method=RequestMethod.POST)
	public String update( @ModelAttribute("cm")CustomerModel customerModel) {
		System.out.println(customerModel);
		iCustomerService.update(customerModel);
		return "customer/success";
	}
此时springMVC会自动把我们更新传递的customerModel与 我们前面放入model中别名为cm的对象进行比较合并。注意这里customerModel的注解名字需要与上面model中的cm别名相同。如此我们就可以进行对象更新。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值