SPRING/Could not resolve view with name

[ SPRING ] Could not resolve view with name 'theme/viewer' in servlet with name

정윤재 2012. 2. 17. 19:13
view 를 어디로 해야 할지 모르거나 URL 로 mapping 된 view 가 없는 경우임

applicationContext.xml 에서 아래와 같이 view 를 자동으로 분기 되도록 설정 하였다면


<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
   <property name="mediaTypes">
  <map>
     <entry key="xml" value="application/xml" />
     <entry key="html" value="text/html" />
  </map>
   </property>
   
   <!-- JAXB XML View (Controller 에서 view 이름을  bean 이름으로 지정하면 결과가 넘어와서 View 화면에 XML 로 뿌려짐) -->
    
   <property name="viewResolvers">
  <list>
   <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
     <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
   </bean>
   
   </list>
   </property>
  
   <!-- property name="ignoreAcceptHeader" value="true" / -->
 
 </bean>

위의 설정은 http request 의 header 의 accept 부분을 기준으로 view 형태를
결정 하는 것입니다.
그래서 브라우저로 접근 하면
accept 가 채워져서 올라오지만 그렇지 않을 경우 (java 로 직접 socket 방식으로
http 접근을 할 경우 등)는 위의 방식으로 하면 위와 같이 view 를 어디로 가야
할지 못찾아서 에러가 납니다.

그래서 결국 applicationContext.xml에서 위의 설정을 지우고

 
 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
  <property name="order" value="1" />
 </bean>
 <bean
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
  <property name="cache" value="false" />
  <property name="order" value="2" />
 </bean>
 
 이런 방식으로 설정을 바꿔줘야 합니다.