gpt4 book ai didi

java - 在 @ModelAttribute 注释方法中返回 Spring 模型

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:51 28 4
gpt4 key购买 nike

我可以在使用@ModelAttribute 注释的方法中使用 Spring 模型作为模型吗?我收到一条错误消息,指出无法在模型中找到该属性。

这是我将对象添加到模型的方法:

@ModelAttribute("survivor")
public Model getSurvivors(Model m) {
m.addAttribute("decedent", new Decedent());

return m;
}

这是渲染方法。它打印“模型包含 decedent=true”

@RenderMapping(params="render=survivors")
public String showSurvivors(Model model, RenderRequest request, RenderResponse response) throws Exception {
logger.info("in showSurvivors");
logger.debug("model contains decedent={}, mode.containsAttribute("decedent");
return "survivors";
}

这是jsp:

<form:form commandName="survivor" action="${submitAction}">
<form:input path="decedent.firstName" />

错误:

org.springframework.web.servlet.tags.RequestContextAwareTag doStartTag Invalid property 'decedent' of bean class [org.springframework.validation.support.BindingAwareModelMap]: Bean property 'decedent' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

最佳答案

你本质上是这样做的:

model.addAttribute("survivor", model);

您在 form:input 中看到的问题是它期望在不存在的模型上使用 getter decedent。解决方法是在普通 Map 之上使用另一种包装器类型:

public class MyCommand{
private Map<String, Decedent> decedents;
...getters and setters.
}

..

model.addAttribute("survivor", ..); //Add MyCommand type..

..

<form:form commandName="survivor" action="${submitAction}">
<form:input path="decedents['decedent']" />

关于java - 在 @ModelAttribute 注释方法中返回 Spring 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884031/

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