9

我有来自客户端的参数正在发送,例如

ids[] = 11
ids[] = 12
ids[] = 21

在服务器端,我有一个带有以下方法的 Spring 控制器:

@RequestMapping("/delete.x")
public @ResponseBody Map<String, Object> delete(HttpServletRequest request, @RequestParam("ids[]") List<Integer> ids) {

当我尝试迭代 id 集合时,如下所示:

for (Integer id : ids) {

我得到一个例外如下:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Spring 是否将 id 的类型更改为 List<String>?不管我怎么想,我怎样才能避免这个问题并将 id 作为整数存储在 List 中?

4

2 回答 2

15

您面临的问题是 java 具有类型擦除功能。所以在运行时 aList<Integer>等同于 aList<String>并且 spring 无法知道你想要 Integers 到你的列表中。

解决方法可能是使用整数数组而不是整数列表。

@RequestMapping("/delete.x")
public @ResponseBody Map<String, Object> delete(HttpServletRequest request,
  @RequestParam("ids[]") Integer[] ids) {
于 2013-01-14T19:23:50.483 回答
1

对于字符串,我已经这样做了,并且运行正常

<form action="addArticals">
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    .
    .
    .
    .
    <input name="artical[]" type="text"> </input>
</form>

在控制器中它会是这样的

@RequestMapping("/addArticals")
public String articalStore(@RequestParam("artical[]")List<String> articals, Modal modal)
{
}
于 2015-08-22T04:43:12.167 回答