gpt4 book ai didi

java - Spring 如何构造传递给 Controller ​​方法的对象?

转载 作者:行者123 更新时间:2023-11-30 02:37:20 25 4
gpt4 key购买 nike

有时代码比文字更能解释事情,所以我将从一个例子开始。假设我有以下内容:

示例:

一个简单的类Bar:

public class Bar
{
private String key;
private String value;

// getters and setters here!
}

另一个简单的类 Foo 包含 Bar 对象的 List:

public class Foo
{
private int id;
private List<Bar> bars;

// getters and setters here!
}

具有以下方法的 Spring Controller :

@RequestMapping("/save")
public void save(Foo foo)
{
// ...
}

网页上的表单:

<form id="awesome-form">
<input name="id" value="42">
<input name="bars[0].key" value="A">
<input name="bars[0].value" value="B">
<input name="bars[1].key" value="C">
<input name="bars[1].value" value="D">
</form>

还有一些提交该表单的 JavaScript:

$.post('/save', $('#awesome-form').serialize());

它发送的数据如下所示:

id=42&bars%5B0%5D.key=A&bars%5B0%5D.value=B&bars%5B1%5D.key=C&bars%5B1%5D.value=D

URL 解码后看起来更容易阅读,如下所示:

id=42&bars[0].key=A&bars[0].value=B&bars[1].key=C&bars[1].value=D

问题:

那么问题出在哪里呢?没有问题! (这就是问题所在......)

此代码正确构造了您期望的对象(通过查看表单),然后将其作为 foo 传递给 save 方法。这一切都非常直观,但我不明白为什么它应该有效。我一直在进行谷歌搜索,并阅读了 spring framework reference 的大部分内容。同时特别关注 web MVC framework ,但我似乎找不到解释表单输入名称所使用的符号的部分。

当然,直观上很明显,bars[0].key 指定了 bars 列表的第一个元素的 key 字段。 foo 对象,但是哪里有文档说明应该是这种情况?

问题:

在哪里可以找到明确指定如何构造以这种方式传递给 Controller ​​方法的对象的文档?

最佳答案

Bean manipulation and the BeanWrapper

上面的链接为您提供了有关 BeanWrapper 如何将 RequestParamRequestBody 转换为 Object 的一些基本概念

>

关于java - Spring 如何构造传递给 Controller ​​方法的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com