3

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

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

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

    return m;
}

这是渲染方法。它打印“模型包含死者=真”

@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 bean 类 [org.springframework.validation.support.BindingAwareModelMap] 的无效属性“decedent”:Bean 属性“decedent”不可读或具有无效的 getter 方法:是否返回getter 的类型是否匹配 setter 的参数类型?

4

1 回答 1

1

您实质上是在这样做:

model.addAttribute("survivor", model);

您在 中看到的问题form:input是它期望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']" />
于 2012-12-15T12:31:06.933 回答