Spring MVC中的Lazy @ModelAttribute

时间:2013-01-26 13:36:55

标签: spring-mvc model annotations

春天有懒惰模型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;
}

上面的代码总是将false放到模型中,因为在调用任何@RequestMapping之前都会执行所有@ModelAttribute。为了工作,在从请求映射调用的方法之后,需要强制将hasValue放到模型中。

1 个答案:

答案 0 :(得分:0)

使用默认的@ModelAttribute注释,就像您提到的那样,在@RequestMapping带注释的方法之前将对@ModelAttribute方法进行评估。可能有两种懒惰的方法:

一个。显式,有一个方法可以设置你的模型属性post方法调用,从你的@RequestMapping方法调用它:

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


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

湾使用after aspectj建议。