【问题标题】:How to take LIST input in @RequestParam in Spring MVC?如何在 Spring MVC 的 @RequestParam 中获取 LIST 输入?
【发布时间】:2020-02-18 13:08:55
【问题描述】:

嘿嘿, 我想在我的请求参数中获取一个数据列表,这里的“personIdCollection”是一组列表,但是当我通过邮递员点击时,我收到了一个错误的请求。 这是我的代码。

控制器

@PostMapping("/face-tag-data")
public String getFaceTaggedData(@RequestParam String projectId,@RequestParam List<String> personIdCollection) {
    return null;
}

这是我的ajax

var data = {};
            data.personIdCollection = personIdCollection;
            data.projectId = $("#projectId").val();
            $.ajax({
                type:'POST',
                url:contextPath+'/face-tag-data',
                data:data,
                success:function(resp){
                    console.log(resp);
                },
                failure:function(resp){
                    console.log(resp);
                }
            });

【问题讨论】:

  • 这可能对你有帮助:stackoverflow.com/questions/4596351/…
  • 已经测试但无法正常工作
  • 大集合数据最好使用@RequestBody,有最大url长度限制。
  • "在请求目标中发现无效字符。有效字符在 RFC 7230 和 RFC 3986 中定义"收到此消息
  • 如果您使用的是 tomcat,那么如果 URL 路径包含“[”和“]”,则 Tomcat 8.5 的更高版本会引发此异常。请检查您的数据中是否有括号。

标签: java ajax spring spring-mvc model-view-controller


【解决方案1】:

这对我有用。我不使用 ajax 请求,而是直接提交我的表单,但它应该可以工作。

我的控制器看起来像:

@RequestMapping(value="addSingleArticles", method=RequestMethod.POST)
public @ResponseBody String addSingleArticles(
        ArticleSubmitData pupilPackageData,
        HttpServletRequest request) {

    ... // do something with the data

}

如您所见,我定义了自己的复合类型,它由三个列表组成。因此,您显然可以直接将它与一个列表一起使用。

public class ArticleSubmitData {

  private List<Article> singleArticles;
  private List<Article> packageArticle;
  private List<Article> popupArticles;

  ... // getter & setter, inner classes etc.

}

在我的服务器页面上,我使用以下 html 代码来完成这项工作

...
    <input id="" class="" type="text" name="singleArticles[${line.index}].engraving" />
...

因此,诀窍是将网页上的变量定义为数组,并在控制器中将其用作列表。正如您在我的示例中所看到的,我还在复合类中使用了一个内部类,它具有额外的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多