gpt4 book ai didi

java - Spring 中 @ModelAttribute 注解的替代方案

转载 作者:行者123 更新时间:2023-11-30 05:30:53 27 4
gpt4 key购买 nike

就像在 Spring 中一样,我们有 httpServeletRequest.getParameter("key") 作为 @RequestParam("key") 的替代方案,我们有什么可以替代 @ModelAttribute("key") 吗?

model.addAttribute("student",new Student());
...
...
@RequestMapping("/processStudentForm")
public String processTheForm(
@ModelAttribute("student") Student student
)
{
...
}

我们有类似的东西吗?

public String processTheForm(
Model model
)
{
Student student = model.getAtribute("key");
...
}

更新1

    @RequestMapping("/showStudentForm")
public String showTheForm(Model model) {
model.addAttribute("key",new Student());
return "studentForm";
}
<form:form action='processStudentForm' modelAttribute='key' method='post'> 
...
</form:form>

我将表单值绑定(bind)到学生对象中。如何通过request对象访问这个模型属性?

最佳答案

学生模型对象无法通过请求对象直接访问,但您可以通过请求对象以不同的方式访问它默认情况下,spring 在后台做了很多工作,它使用 FormHttpMessageConverter 将其转换为 application/x-www-form-urlencoded 请求上的模型映射,您可以引用文档。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/FormHttpMessageConverter.html

您可以执行与 spring 内部相同的操作。我尝试了它的工作原理,但您可以通过多种方式完成此操作,请参阅堆栈溢出帖子以获取其他答案

       Map map = httpServletRequest.getParameterMap().entrySet()
.stream().collect(Collectors.toMap(e -> e.getKey(), e -> Arrays.stream(e.getValue()).findFirst().get()));
Student student = new ObjectMapper().convertValue(map, Student.class);

Getting request payload from POST request in Java servlet

但使用默认实现始终是一个好习惯。

关于java - Spring 中 @ModelAttribute 注解的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587348/

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