Spring MVC可以在@RequestMapping之后调用@ModelAttribute吗?

mar*_*one 7 java spring spring-mvc modelattribute

我有一个像这样的控制器:

@Controller
public class HomeController {

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public String update(@RequestParam("user") User user, ModelMap model){
        SaveUserToDatabase(user);
        return "index";
    }

    @ModelAttribute("user")
    String getUser() {
        return LoadCurrentUserFromDataBase();
    }
}
Run Code Online (Sandbox Code Playgroud)

简而言之,我的观点user几乎可以在每个动作中呈现HomeController,但我不想编码:

model.addAttribute("user", LoadCurrentUserFromDataBase())
Run Code Online (Sandbox Code Playgroud)

在每一个行动中,相反,我正在寻找一种方式@ModelAttribute来揭露user我的所有观点.

但是,根据文档,@ModelAttribute控制器中的方法在 @RequestMapping方法之前,在同一个控制器中调用.

至于我的代码,getUser之前被调用update,但我想获得更新的用户.

有没有办法在动作之后公开user属性而不在每个动作中显式调用?model.addAttribute

Wil*_*lQu 5

每次执行操作时POST,请进行重定向.这样,您的POST方法将只负责更新数据,更新的数据将由目标控制器加载.

所以在这种情况下,该update()方法将重定向到另一个控制器,该控制器将getUser()在其GET方法之前调用该方法.