Eri*_*ang 6 java generics spring spring-mvc
我想将模型数据列表发送到springMVC.
基本思路是:
@ModelAttribute用来获取请求参数.HTML代码:( 单个模型)
<tr>
<td>id:</td>
<td><input type="text" id="sportsFieldList[0].id" name="sportsFieldList[0].id" /></td>
</tr>
<tr>
<td>name:</td>
<td><input type="text" id="sportsFieldList[0].name" name="sportsFieldList[0].name" /></td>
</tr>
<tr>
<td>location:</td>
<td><input type="text" id="sportsFieldList[0].location" name="sportsFieldList[0].location" /></td>
</tr>
<tr>
<td>description:</td>
<td><input type="text" id="sportsFieldList[0].description" name="sportsFieldList[0].description" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
SportsFieldListWrapper.java:
import java.util.List;
import xxx.SportsField;
public class SportsFieldListWrapper {
private List<SportsField> sportsFieldList;
public List<SportsField> getSportsFieldList() {
return sportsFieldList;
}
public void setSportsFieldList(List<SportsField> sportsFieldList) {
this.sportsFieldList = sportsFieldList;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器方法:
public @ResponseBody Map<Object, Object> batchAdd(@ModelAttribute SportsFieldListWrapper sflWrapper) {
}
Run Code Online (Sandbox Code Playgroud)
SportsField.java:
// Just a simple POJO
public class SportsField {
private Long id;
// more fields
// getter & setter
}
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个可重用的通用版本的包装器,以避免为每种类型创建一个包装器.
ListParamWrapper.java:
import java.util.List;
public class ListParamWrapper<T> {
private List<T> paramList;
public List<T> getParamList() {
return paramList;
}
public void setParamList(List<T> paramList) {
this.paramList = paramList;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器方法:
public @ResponseBody Map<Object, Object> batchAdd(@ModelAttribute ListParamWrapper<SportsField> listWrapper) {
}
Run Code Online (Sandbox Code Playgroud)
HTML代码:( 单个模型)
<tr>
<td>id:</td>
<td><input type="text" id="paramList[0].id" name="paramList[0].id" /></td>
</tr>
<tr>
<td>name:</td>
<td><input type="text" id="paramList[0].name" name="paramList[0].name" /></td>
</tr>
<tr>
<td>location:</td>
<td><input type="text" id="paramList[0].location" name="paramList[0].location" /></td>
</tr>
<tr>
<td>description:</td>
<td><input type="text" id="paramList[0].description" name="paramList[0].description" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
得到错误:
org.springframework.beans.InvalidPropertyException:bean类的无效属性'paramList [0]'[com.sportslight.entity.ListParamWrap per]:属性路径'paramList [0]'中的越界索引; 嵌套异常是java.lang.IndexOutOfBoundsException:索引:0,大小:0
我已经在Google上搜索过,当列表大小> 256时,可能会出现类似的错误,但事实并非如此,测试中的列表大小只有2.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |