1

春の怠惰なモデルattrubuteアノテーションのようなものはありますか?

私が探しているものを説明するためのコードの平和の下

@Controller
class MyController {
    private boolean hasValue=false;

@RequestMapping(value "test.html")
public String testMEthod(ModelMap model, @RequestParam(value = "person", defaultValue = "null") Person person)
    person==null ? false : true;
    return "testResults";
}

@ModelAttribute("hasValue")
public boolean hasValue(){
     return hasValue;
}

すべての@ModelAttributeは@RequestMappingを呼び出す前に実行されるため、上記のコードは常にモデルにfalseを設定します。動作するには、リクエストマッピングから呼び出されたメソッドの後にhasValueをモデルに配置する必要があります。

4

1 に答える 1

0

あなたが言及したように、デフォルトの@ModelAttribute注釈を使用すると、 @ModelAttribute メソッドは@RequestMapping注釈付きのメソッドの前に評価されます。おそらく、怠惰に行う2つの方法は次のとおりです。

を。明示的、モデル属性ポストメソッド呼び出しを設定するメソッドを用意し、 @RequestMapping メソッドから呼び出します。

public void setLazyModelAttribs(Model model){
     model.addAttribute("hasValue", hasValue);
}


@RequestMapping
public void testMethod(..Model model, ...){
    //normal request mapping
    setLazyModelAttribs(model);
}

b. afterアスペクトアドバイスを使用してそれを行います。

于 2013-01-26T13:57:11.787 に答える