如何禁用在同一控制器中调用@ModelAttribute方法的某些请求?

时间:2013-05-27 08:18:13

标签: spring-mvc modelattribute

我正在使用Spring3 MVC。在我的控制器中,我有很多方法,如创建,编辑和搜索。

在视图中的表单中,我需要一个包含db的一些值的列表。所以我添加了以下方法

```

@ModelAttribute("types") 
public Collection<BooleanValue> populateTypes() {
    return typeRepository.findAll();
}

```

然后,每个请求都将首先调用此方法,并将'types'对象放入我的模型对象中。但是对于某些请求,比如searh或listAll。我不想这个方法被调用。如何过滤对其上包含@ModelAttribute(“types”)的方法的某些请求?

```

@RequestMapping(value = "/search", method = RequestMethod.GET)
public String search(Model model) {
    List<User> result = userService.findAll();
    model.add("result");
    return "index";
}

```

我首先不希望search请求来电populateTypes,因为我的populateTypes视图中不需要search

2 个答案:

答案 0 :(得分:4)

如果所有视图都不需要populateTypes参考数据,则最好删除带注释的populateTypes()方法,只需在需要时添加数据 - 将其添加到{{1需要它的特定ModelAndView方法。

因此,如果您有一个名为@RequestMapping的{​​{1}}方法,其视图确实需要数据,那么您可以执行以下操作:

@RequestMapping

答案 1 :(得分:-1)

如果您没有返回视图,则应使用@ResponseBody