2010-01-13 2 views
2

스프링 MVC를 사용하여 REST 스타일 서비스를 만드는 방법에 대해 Spring 3.0 DocumentationBlog Posts (followups)을 읽었지만 ContentNegotiatingViewResolver 사용 방법에 대한 작동 예제를 찾을 수 없습니다. 나는이RESTful 서비스에 Spring 3.0 컨텐츠 협상을 사용하는 방법에 대한 예제가 있습니까?

@Controller 
public class IndexController implements Serializable 
{ 
    @RequestMapping("/index") 
    public ModelAndView index() 
    { 
     ModelAndView mav = new ModelAndView(); 
     mav.setViewName("index"); 
     return mav; 
    } 
} 

같은 테스트 컨트롤러가와 URL의 확장에 따라 견해를 해결하기 위해 노력이

<bean 
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="html" value="text/html" /> 
      <entry key="xml" value="text/xml" /> 
      <!-- 
       <entry key="json" value="application/json"/> 
      --> 
     </map> 
    </property> 
    <property name="defaultContentType"><value>text/html</value></property> 
    <property name="defaultViews"> 
     <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> 
      <property name="marshaller"> 
       <bean class="org.springframework.oxm.xstream.XStreamMarshaller" /> 
      </property> 
     </bean> 
    </property> 
    <property name="viewResolvers"> 
     <list> 
      <bean 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/views/pages/" /> 
       <property name="suffix" value=".jsp" /> 
      </bean> 
     </list> 
    </property> 
</bean> 

같은 것을 사용하려고 (내가 HTML, .XML을 지원하고자하고 .json). .html 뷰가 제대로 작동하지만 (올바른 JSP 뷰도 보여줌) JSON과 XML을 얻으려는 시도는 없었습니다 (defaultViews 속성을 설정하는 것은 내가 시도한 것 중 하나였습니다). 많은 독서 자료가있는 것 같지 않습니다. 아무도 경험이나 예제가 있습니까?

답변

2

저는 XML의 콘텐츠 유형이 text/xml이 아니고, application/xml이 아니라는 것이 문제라고 생각합니다. MarshallingViewtext/xml의 콘텐츠 유형을 허용하지 않습니다.

ContentNegotiatingViewResolver은 각보기를 참조하여 요청에서 해결 된 콘텐츠 형식을 수락할지 묻습니다. 지원하려는 각 콘텐츠 유형에 대해 일치하는 contentType 속성이있는보기가 필요합니다.

당신은 mediaTypes 속성에 컨텐츠 유형을 변경할 수 있습니다, 또는 당신은 MarshallingViewcontentType 속성을 text/xml을 할 재정의 할 수 있습니다.

+0

감사합니다. 컨텐츠 유형이 실제로 잘못되었지만 "이제 모델 {}에서 마샬링 될 객체를 찾을 수 없습니다."라는 예외가 발생합니다. XML 마샬 러가 올바르게 구성되어 있습니까 (JSON을 생성하도록 XStream을 구성하려고합니다). – Daff

+0

@Daff 당신의 모델이 비어 있기 때문입니다 – axtavt

+0

실제로, MarshallingView가 이것으로 무엇을해야하는지 알 수 있도록 모델을 설정해야합니다. 그러나 이것은 완전히 다른 질문이기 때문에이 것을 완료로 받아 들여 다음 단계로 넘어 가십시오. – skaffman

관련 문제