java - 如何将 DTO 传递给控制器
问题描述
我需要传递给控制器 DTO 对象。我的带有公共方法的 DTO 对象,它总是得到空值:
public class MyDto {
public String name;
public String age
}
// MyController
@Controller
public class MyController {
@PostMapping("/")
public String data(MyDto obj) {
obj.name // always null;
}
}
但是如果我将 getter 和 setter 添加到MyDto
所有工作正常。我怎样才能MyDto
只通过公共字段(我无法更改此对象,因为它位于另一个我无权访问的 jar 中)?
解决方案
要完成上面的@Arun 答案,如果您想使用@Controller
注释而不是@RestController
,您必须像这样@RequestBody
替换@ModelAttribute
@Controller
public class MyController {
@PostMapping("/")
public String data(@ModelAttribute MyDto obj) {
System.out.println(obj.name);
}
}
推荐阅读
- django - 如何将数据从 get_avatar()(Google 登录)发送到我的模板?
- python - 使用 python PIL 调整文件夹中的图像大小
- python - 编写返回列表中最短单词的函数
- sass - 为什么 `gulp-sass` 看不到我的 `mixins.scss` 文件?
- javascript - 未捕获的语法错误:意外的标记“?”
- python - spacy train 后的最终模型是否使用整个数据创建?
- python - Django:插入或更新数据库条目
- botframework - 在将用户话语转发到 LUIS 之前在机器人中预处理用户话语
- information-retrieval - 是否有可以最大化排名结果的平均倒数排名 (MRR) 的学习排名算法?
- javascript - 与 .map() 反应时一次只显示一个元素