3

@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 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 に答える