Spring JSON View: ApplicationObjectSupport не выполняется в ApplicationContext - PullRequest
3 голосов
/ 22 октября 2009

Я пытаюсь использовать Json View for Spring (http://spring -json.sourceforge.net / ) (org.springframework.web.servlet.view.json.JsonView), но всякий раз, когда я написать класс контроллера, который расширяет AbstractController Я получаю следующую ошибку:

java.lang.IllegalStateException: экземпляр ApplicationObjectSupport [org.springframework.web.servlet.view.json.JsonView] не выполняется в ApplicationContext

Странная вещь заключается в том, что когда я реализую интерфейс контроллера напрямую и не наследую, это нормально . Ошибка происходит только тогда, когда я наследую от AbstractController.

В моем текущем случае я хотел бы расширить AbstractFormController и, следовательно, не могу написать класс, который не наследуется от AbstractController.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 22 октября 2009

Это довольно вводящее в заблуждение сообщение об ошибке, на самом деле он жалуется, что JsonView не работает внутри контекста приложения. Это означает, что bean-компонент JsonView не был создан в Spring, но вы сами его создали (JsonView расширяет ApplicationObjectSupport и поэтому должен управляться Spring).

Однако вы не дали нам ни одного своего кода, так что трудно сказать наверняка. Я полагаю, ваш контроллер сам создает экземпляр JsonView? Вы должны позволить Spring сделать это, либо вставив бин JsonView в контроллер, либо, возможно, используя ViewResolver (если Spring-Json поставляет один).

1 голос
/ 19 апреля 2013

Если вы выполняете настройку Java (в отличие от XML), в вашем классе конфигурации вы можете вызвать setApplicationContext метод для объекта, который жалуется.

Вот что помогло мне в Spring MVC 3.2.2 при попытке инициализировать ContentNegotiatingViewResolver в Java.

Вот пример класса конфигурации:

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

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

     ...

     retVal.setApplicationContext( appContext );

     return retVal;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...