1

春天有没有像惰性模型属性注释这样的东西?

下面的代码来解释我在寻找什么

@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 设置为模型,因为所有 @ModelAttribute 都在调用任何 @RequestMapping 之前执行。为了工作,它需要强制在从请求映射调用的方法之后将 hasValue 放到模型中。

4

1 回答 1

0

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

一个。明确的,有一个方法来设置你的模型属性发布方法调用,从你的 @RequestMapping 方法调用它:

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


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

湾。使用afteraspectj 建议进行操作。

于 2013-01-26T13:57:11.787 回答