spring - 在 Spring 中,如何将整数列表绑定(bind)到 RequestParam?

标签 spring http-request-parameters

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

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

在服务器端,我有一个具有以下方法的 Spring Controller :

@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 是否将 ids 类型更改为 List?不管我怎么想,如何避免这个问题并将 id 以整数形式存储在列表中?

最佳答案

你面临的问题是java有类型删除。所以在运行时a List<Integer>相当于 List<String> spring 无法知道你想要将整数放入你的列表中。

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

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

关于spring - 在 Spring 中,如何将整数列表绑定(bind)到 RequestParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14324881/

相关文章:

spring - 部署为 WAR 时无法使用 Spring Boot WebFlux 解决 View 异常

spring - Grails Rest Client Builder 抛出 OperationNotSupported

java.lang.NoSuchFieldError : APPLICATION_CONTEXT_ID_PREFIX 错误

java - 刷新 JSP 页面后在 HTML select 元素中保留所选值

java - 是否有一种声明性方法来根据请求字段之一验证请求参数?

java - Spring Data JPA - 编写复杂的查询方法

java - 如何在不使用带有 spring hateoas 的@EnableHypermediaSupport 的情况下启用 HAL 渲染?

java - Spring 的 @RequestMapping 内部结构

java - 如何将 HttpServletRequest 对象中包含的所有参数(名称和值)表示为单个字符串?

java - MultipartFile 每次都返回 null