需求:
假设我们要修改一条信息,进入修改这条信息的页面进行修改,如果修改的数据不符合要求则需要返回修改前的页面,修改前的数据也要原封不动的返回。
这时就用到了数据回显。
首先梳理下这个数据回显完成的过程。
先在前端页面获取后台传入的信息,传入信息要通过model的addAttribute完成数据的传入。
如果出错了,回到之前的页面和数据。这时数据又需要model.addAttribue方法完成数据的传入。
springmvc中提供了自动数据回显(只限于pojo类型)
springmvc自动将形参中的pojo重新放回request域中,request的key为pojo的类名(首字母小写)
public String editItemsAllSubmit(Model model, ItemsQueryVo itemsQueryVo)
throws Exception {这里的参数类型是ItemsQueryVo
在前台页面里
<form id="itemForm"
action="${pageContext.request.contextPath }/editItemsSubmit.action"
method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="${itemsCustom.id }" /> 修改商品信息:
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td><input type="text" name="name" value="${itemsCustom.name }" /></td>
</tr>
<tr>
<td>商品价格</td>
<td><input type="text" name="price"
value="${itemsCustom.price }" /></td>
</tr>
<tr>
<td>商品生产日期</td>
<td><input type="text" name="createtime"
value="<fmt:formatDate value="${itemsCustom.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" /></td>
</tr>
<tr>这里的名字和pojo类名字相同才能完成自动回显。
相当于
springmvc自动将itemsCustom放回request,相当于调用下边的代码:model.addAttribute("itemsCustom", itemsCustom);
页面中的从“itemsCustom”中取数据。
如果说jsp的页面的属性名称不再和controller的参数对应那么需要做下面的工作
<td>商品生产日期</td>
<td><input type="text" name="createtime"
value="<fmt:formatDate value="${items.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" /></td>
</tr>
<tr>这里不是itemsCustom而是items了,那么这时候出错因为不和形参匹配。所以无法把数据回显。需要在controller做些工作
public String editItemSubmit(Model model,@ModelAttribute("item") ItemsCustom itemsCustom){} 将前端页面的属性名称和形参进行绑定即可
注意:自动回显只有pojo类型可以,基本类型无法完成自动回显。
那么在每次需要数据回显时完成数据的传出就是model.addAttribute。
也可以将方法的返回值传入
假设有这么一个函数
//商品分类
@ModelAttribute("itemtypes")//这里将返回值交给了jsp页面
public Map<String, String> getItemTypes(){
Map<String, String> itemTypes = new HashMap<String,String>();
itemTypes.put("101", "数码");
itemTypes.put("102", "母婴");
return itemTypes;
}jsp页面里 <select name="itemtype">
2 <c:forEach items="${itemtypes }" var="itemtype">
3 <option value="${itemtype.key }">${itemtype.value }</option>
4 </c:forEach>
5 </select>也能得到相应的数据。
参考这位博主的博客,多谢博主https://www.cnblogs.com/lcngu/p/5517877.html
本文介绍SpringMVC中如何实现数据回显功能,重点讲解如何利用model.addAttribute方法及自动数据回显机制来确保修改页面上的数据能正确显示。同时探讨了在不同情况下的数据绑定与回显策略。
1041

被折叠的 条评论
为什么被折叠?



