Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring @模型属性后句柄_Spring_Spring Mvc - Fatal编程技术网

Spring @模型属性后句柄

Spring @模型属性后句柄,spring,spring-mvc,Spring,Spring Mvc,目前,方法上的@ModelAttribute注释用于绑定模型中的属性。但这是在处理控制器之前发生的 是否可以在处理控制器后但渲染视图之前运行此操作 我知道使用拦截器可以实现这一点,但如果能够只为特定控制器实现这一点,并将所有代码/配置放在一个地方,那就太好了。下面的代码将不包含任何新的技术知识。但我发布代码是为了让这个答案在将来为其他人所理解,以供参考 不,你不能@modeldattribute在控制器操作之前被调用。但是您可以通过调用控制器操作代码中的@modeldattribute函数来手动

目前,方法上的@ModelAttribute注释用于绑定模型中的属性。但这是在处理控制器之前发生的

是否可以在处理控制器后但渲染视图之前运行此操作

我知道使用拦截器可以实现这一点,但如果能够只为特定控制器实现这一点,并将所有代码/配置放在一个地方,那就太好了。

下面的代码将不包含任何新的技术知识。但我发布代码是为了让这个答案在将来为其他人所理解,以供参考

不,你不能
@modeldattribute
在控制器操作之前被调用
。但是您可以通过调用控制器操作代码中的
@modeldattribute
函数来手动覆盖属性

@ModelAttribute("mySessions")
public Iterable<Session> mySessions(){
    return sessionService.findByUser(profileService.me());
}

@RequestMapping(value = "/")
public String index(Model model){
    // Your Code .......... 
    model.addAttribute("mySessions", mySessions());
    return "system/home/index";
}

你能试着在conroller级别使用AOP吗?我宁愿使用拦截器也不愿使用AOP路由。我认为AOP不应该用于这样的事情。我可能不同意你关于AOP使用的想法。如果你同意拦截器,请继续。
@RequestMapping(value = "/")
public String index(Model model){
    // Your Code .......... 
    model.addAttribute("mySessions", sessionService.findByUser(profileService.me()));
    return "system/home/index";
}