2009-10-22 4 views
2

스프링 (http://spring-json.sourceforge.net/) (org.springframework.web.servlet.view.json.JsonView)에 대한 Json 뷰를 사용하려고하지만 컨트롤러 클래스를 작성할 때마다Spring JSON View : ApplicationContext에서 ApplicationObjectSupport가 실행되지 않는다.

java.lang.IllegalStateException: ApplicationObjectSupport instance [org.springframework.web.servlet.view.json.JsonView] does not run in an ApplicationContext

이상한 것은 내가 직접 컨트롤러 인터페이스를 구현하고 상속하지 않는 경우, 좋은 것을,이다 : 그 AbstractController 나는 다음과 같은 오류가 확장합니다. AbstractController에서 상속하면 오류가 발생합니다.

내 현재의 경우 AbstractFormController을 확장하고자하므로 AbstractController에서 상속받지 않는 클래스는 작성할 수 없습니다.

아이디어가 있으십니까?

+0

참고 : 여기에

샘플 구성 클래스입니다이 http://spring-json.sourceforge.net/ – skaffman

+0

좋은 지적 출신이 핵심 봄의 일부가 아닌, 질문을 편집 . –

답변

3

오해의 소지가있는 오류 메시지인데 실제로 JsonView가 앱 컨텍스트에서 실행되지 않는다고 불평하고 있습니다. 이것이 의미하는 바는 JsonView bean이 Spring에 의해 인스턴스화되지 않았지만 자신을 인스턴스화했다는 것입니다 (JsonViewApplicationObjectSupport까지 확장되므로 스프링 관리해야 함).

그러나 코드를 입력하지 않았으므로 확실하게 알 수 없습니다. 귀하의 컨트롤러가 JsonView 자체를 인스턴스화하는 것 같습니까? JsonView 빈을 컨트롤러에 삽입하거나 ViewResolver (Spring-Json이 제공하는 경우)을 사용하여 Spring이이를 수행하도록해야합니다.

+0

을 더 잘 설명 할 수 없었습니다 :-) – lisak

1

Java 구성 (XML과 반대)을 수행하는 경우 구성 클래스에서 불평하는 객체에 setApplicationContext 메소드를 호출 할 수 있습니다.

자바에서 ContentNegotiatingViewResolver을 초기화하려고 할 때 스프링 MVC 3.2.2에서 나에게 속임수를 사용했다.

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

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

    ... 

    retVal.setApplicationContext(appContext); 

    return retVal; 
    } 
} 
관련 문제