2011-07-29 2 views
3

일부 서비스에 대한 견해를 제공하고 다른 사용자를위한 웹 서비스 역할을하는 응용 프로그램을 작성 중입니다.봄에 xml과 jsp보기 모두 받기

컨트롤러에서 '/'을보기에 매핑했으며 앱이 시작되면이보기가 표시됩니다.
내가이

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
<property name="mediaTypes"> 
    <map> 
     <entry key="html" value="text/html" /> 
     <entry key="xml" value="application/xml" /> 
     </map> 
</property> 
<property name="defaultViews"> 
    <list> 
    <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
    <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> 
     <constructor-arg> 
     <bean class="org.springframework.oxm.xstream.XStreamMarshaller" 
      p:autodetectAnnotations="false" /> 
       </constructor-arg> 
    </bean> 
    </list> 
    </property> 
<property name="viewResolvers"> 
    <list> 
     <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 
    </list> 
    </property> 


    </bean> 
    <bean id="jspView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
    </bean> 

같은 뷰 리졸버를 사용하려고하지만 문제는 지금 모든 XML 형식으로오고있다 이제 때. 그래서 응용 프로그램을 시작할 때
첫 페이지는 기본적으로 xml 형식으로 제공되지만보기가 필요합니다.

답변

3

기본적으로 ContentNegotiatingViewResolver은 HTTP Accept 요청 헤더를 사용하여 렌더링 할보기를 결정합니다. 해당 헤더에 클라이언트가 application/xml 콘텐츠 유형을 처리 할 수 ​​있다고 표시된 경우 XML보기 만 되돌려 보내며 일부 브라우저에서는 XML보기를 다시 보냅니다.

브라우저에서 HTML XML을 사용할 수 있다고 표시하면 어느 페이지로 돌아갈 지 예측할 수 없습니다. 다른 정보가 없으면 Spring은 원하는 정보를 결정할 방법이 없습니다.

URL 경로가 단지 / 인 경우 브라우저가 기본적으로 보내는 것 이외의 유용한 정보를 제공하지 않습니다. 속성을 true으로 설정하여 URL에서 파일 확장명을 사용하여 해결할보기를 결정하도록 URL을 다시 구성 할 수 있습니다. 예를 들어 /blah.xml (XML 포함) 요청에 대한 응답은 Accept 헤더보다 우선합니다.

ContentNegotiatingViewResolver에는 몇 가지 옵션이 있으므로 javadoc을주의 깊게 읽는 것이 좋습니다.

+0

네, 그렇게 생각했습니다. 그냥 확인하셔야합니다. 명확히 해 주셔서 감사합니다. :) – parbi