开发者

Spring JSON View: ApplicationObjectSupport does not run in an ApplicationContext

I'm trying to use a Json View for Spring (http://spring-json.sourceforge.net/) (org.springframework.web.servlet.view.json.JsonView) but whenever I write a controller class that extends AbstractController I get the following Error:

java.lang.IllegalStateException: ApplicationObjectSupport ins开发者_Go百科tance [org.springframework.web.servlet.view.json.JsonView] does not run in an ApplicationContext

The weird thing is, that when I implement the Controller interface directly and do not inherit, it is fine. The error only happens when I inherit from AbstractController.

In my current case though I would like to extend AbstractFormController and hence can't write a class that does not inherit from AbstractController.

Any ideas?


That's a rather misleading error message, it's actually complaining that the JsonView is not running inside an app context. What it means is that the JsonView bean was not instantiated by Spring, but that you instantiated it yourself (JsonView extends ApplicationObjectSupport, and should therefore be Spring-managed).

However, you haven't given us any of your code, so it's hard to tell for sure. I'm guessing your controller is instantiating JsonView itself? You need to let Spring do that, either by injecting a JsonView bean into the controller, or perhaps using a ViewResolver (if Spring-Json supplies one).


If you are doing Java configuration ( as opposed to XML ), in your configuration class you may want to call setApplicationContext method on object that is complaining.

This is what did the trick for me in Spring MVC 3.2.2 when trying to initialize ContentNegotiatingViewResolver in Java.

Here is the sample configuration class:

@Configuration
@EnableWebMvc
...
public class MyConfig
{
  @Inject
  private ApplicationContext appContext;

  @Bean
  public ContentNegotiatingViewResolver contentNegotiatingViewResolver ( )
  {
     ContentNegotiatingViewResolver retVal = 
       new ContentNegotiatingViewResolver( );

     ...

     retVal.setApplicationContext( appContext );

     return retVal;
  }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜