当前位置: 首页 > 知识库问答 >
问题:

Ajax将对象数组发送到Spring MVC控制器-多个错误

慎弘化
2023-03-14
@PostMapping("/addAdmin")
public void addAdmin(@RequestParam List<UserRolesGUIBean> userRolesGUIBeans)
{
    // ...      
}   

JS:

 var entries = [];
 //...
 // entries is an array of objects of the form {id: "..", role: ".."}
 // verified to be correct before submission

 $.ajax({
        type : "post",
        dataType : "json", 
        url : 'addAdmin',  
        data : JSON.stringify(entries)
 })

豆角

public class UserRolesGUIBean implements Serializable {
    private String id;
    private String role;
    // + Constructors (Empty + Full), Getters and setters
}

错误:

PostMapping("/addAdmin")
    public void addAdmin(@ModelAttribute ArrayList<UserRolesGUIBean> userRolesGUIBeans)  {

对于一个简单的任务来说,这太复杂了。

共有1个答案

孟正志
2023-03-14

您试图通过使用POST发送JSON对象。您应该使用@requestbody注释。

尝试用这种方式更改您的方法:

@PostMapping("/addAdmin")
public void addAdmin(@RequestBody List<UserRolesGUIBean> userRolesGUIBeans)
{
    // ...      
} 

这样,Spring将截获Json,并将其转换为希望的对象列表

 类似资料:
  • 我有窗体和相应的控制器,对象列表被传递给它们。 实体类: 控制器: 形式: 我假设表单中的百里叶th:each循环变量不能是th:object=${ent2}(因为如果我这样做,select form返回null)。而th:value="${ent2.name}返回字符串值。所以我不得不将@RequestParam(th:value)发送给“save”方法。但是在这种情况下,我必须对数据库进行额外

  • 我的视图中有一个向控制器发送对象的表单,但问题是,如果我发送的对象超过256个,就会出现异常: 所以我在想为什么会有这样的限制,于是我找到了这个话题:https://stackoverflow.com/a/24699008/4173394 但它似乎对我不起作用(可能是我的一个坏习惯)。 下面是我的结构:我的视图名为createUpdate.vm,并像这样发布我的表单: 我在FollowerFile

  • 问题内容: 我正在努力,并努力通过JSON将数组发送到MVC控制器动作。 这是我所拥有的以及我已经尝试过的… 我该怎么做 ? 编辑:建议从顶部发送“按原样” 发送的邮件-不起作用。我在jquery框架的某处收到一个奇怪的异常:( 我认为这意味着它试图将null分配给它不能分配的东西。 编辑:我正在使用MVC2不是3 Edit2:@Monday的答案之后- 问题是由于我如何构建数组 而并非如此-关于

  • seleccion“对象它是一个实体,具有我从Ajax发送的JSON的一些属性,”seleccionados“是一个列表,保存接收到的数组,但当我发送它时,obj参数总是返回一个空对象,Ajax发送错误函数,我认为问题是我在向对象发送数组,但我不知道如何解决它 选择对象模型:

  • 我在将对象列表从Thymeleaf保存到控制器时遇到了一个大问题。thymeleaf中的对象列表由Jquery生成。但我不知道如何将数据传输到控制器,对象列表不知道大小。因为用户可以随时添加它。请帮助我将thymeleaf中的列表对象发送给控制器。 我创建了一个具有1个属性的新类:ArrayList loaiDoans;“LoaiDoan”是我想要保存的对象。使用该类是将列表“loaidon”从t

  • 问题内容: 我的控制器: 我想通过AJAX将参数发布到控制器。传递并不是问题,但是我无法发布。 我的JavaScript代码: 我尝试了一个测试阵列,但没有成功。:(我也尝试设置,但也没有成功… 该贴到我的控制器总是空。 问题答案: 您可以定义一个视图模型: 然后调整您的控制器动作以将此视图模型作为参数: 最后调用它: