Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Java @controlleradvice给出错误:范围';会议';对于当前线程,未处于活动状态_Java_Spring_Spring Mvc_Controller_Controller Advice - Fatal编程技术网

Java @controlleradvice给出错误:范围';会议';对于当前线程,未处于活动状态

Java @controlleradvice给出错误:范围';会议';对于当前线程,未处于活动状态,java,spring,spring-mvc,controller,controller-advice,Java,Spring,Spring Mvc,Controller,Controller Advice,我面临Spring mvc注释的问题@Controlleradvice。 我有两个控制器类:UserGapsController和RegistrationBaseController 两个类都使用 @控制器 @控制器建议 @自动连线会话对象 @作用域(WebApplicationContext.Scope\u会话) @当在方法级别使用@Modelattribute时,必须使用Controlleradvice注释。因此,我在两个类中都有一个用@modeldattribute注释的方法。 现在的问题

我面临Spring mvc注释的问题@Controlleradvice。 我有两个控制器类:UserGapsControllerRegistrationBaseController 两个类都使用

  • @控制器
  • @控制器建议
  • @自动连线会话对象
  • @作用域(WebApplicationContext.Scope\u会话)
  • @当在方法级别使用@Modelattribute时,必须使用Controlleradvice注释。因此,我在两个类中都有一个用@modeldattribute注释的方法。 现在的问题是,当我仅在UserGapsController.java中使用@Controlleradvice时,应用程序运行良好,当我在RegistrationBaseController.java中使用@Controlleradvice时,它在运行时出现以下错误:

    创建名为“org.springframework.web.servlet.mvc.method.annotation.requestmappinghandler”的bean时出错:调用init方法失败:嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“userGapsController”的bean时出错:当前线程的作用域“会话”未激活


    这个错误的原因是什么,我们不能有2个@Controlleradvice注释类吗?当我在RegistrationBaseController.java中注释@Controlleradvice时,它执行得很好。

    您试图拥有多个处理不同异常的
    @Controlleradvice

    你可以像这样使用控制器上的命令

    @ControllerAdvice
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public class RegistrationExceptionHandler {
    
        //...
    
    }
    


    如果您想要两个类,其中两个具有@controlleradvice,那么只需添加@Order(Ordered.HIGHEST_priority)注释即可。会的work@ArunPrasat对不起,如果我听起来很蠢,但我是春天的新手。所以我们不能有两个类有controlleradvice注释?如果是,背后的逻辑是什么?我的理解是controlleradvice用于在方法级别使用ModelAttribute的地方。我的理解有误吗?>@Controlleradvice注释必须在方法级别使用@Modelattribute时使用。事实并非如此,
    @modeldattribute
    在常规控制器中工作得非常好。只有当你想要一个适用于所有控制器的
    @modeldattribute
    方法时,你才需要一个
    @ControllerAdvice
    对不起,如果我听起来很愚蠢,但我对spring是新手。所以我们不能有两个类有controlleradvice注释?如果是,背后的逻辑是什么?我的理解是controlleradvice用于在方法级别使用ModelAttribute的地方。我的理解错了吗?
    @ControllerAdvice
    @Order(Ordered.LOWEST_PRECEDENCE) // or any int value
    public class UserGapsExceptionHandler {
    
        //...
    
    }