添加@ControllerAdvice后報錯 Failed to invoke @ExceptionHandler method


首先。單獨使用ControllerAdvice 無法正常工作。需要配合@EnableWebMvc 使用。

 

@ControllerAdvice

@EnableWebMvc

pulbic class ExceptionControllerAdvice{

 

  @ExceptionHandler(NotFoundException.class)

  @ResponseBody

  public Map<String,Object> notFoundExc(NotFoundException exc,HttpServletRequest req){

  .......

  }

}

在啟動之異常處理報錯。

錯誤信息:

七月 04, 2016 11:00:11 上午 org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver doResolveHandlerMethodException

嚴重: Failed to invoke @ExceptionHandler method: public java.util.Map<java.lang.String, java.lang.Object> com.dooioo.modelException.ExceptionControllerAdvice.notFoundError(com.dooioo.modelException.NotFoundException,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:134)

at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101)

at...........(省略。。。。)

 

 

xx-servlet.xml中已經配置了messageconverter處理器了。

 

 <bean id="dyMessageConverter" class="com.dooioo.web.converter.DyMappingJacksonHttpMessageConverter"/>

 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

 

        <!-- spring綁定時處理函數 -->

        <property name="webBindingInitializer">

            <bean class="com.dooioo.init.DefaultBindingInitializer"/>

        </property>

 

        <property name="messageConverters">

            <list>

                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>

                <ref bean="dyMessageConverter"/>

            </list>

        </property>

        <property name="requireSession" value="false"/>

        <property name="order" value="0"/>

    </bean>

 

上網翻了一遍資料 沒有結果。

最后發現和在xml中的順序有關系。<mvc:annotation-driven/>。

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 適配器必須聲明在<mvc:annotation-driven />之前,否則不能正常處理參數類型的轉換 

 

到此問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM