2011. 9. 22. 08:53
개발관련
ContentNegotiatingViewResolver 를 사용하면서 BeanNameViewResolver를 사용한다는게 단순하게 되지 않았다. 아래처럼 설정하면 될것 같지만,
안된다. 무슨 이유인지 viewResolvers 들이 제대로 동작 하지 않는다. 아마도 적절한 key(Header)를 찾지 못하여 매핑이 이루어 지지 않는듯 하다. 해서, ContentNegotiatingViewResolver 에서 매핑되지 않는것을 다시 BeanNameViewResolver로 매핑하게 하면 해결된다. 즉 아래처럼 설정하면,
ContentNegotiatingViewResolver 에서 매핑되지 않은 뷰들은 아래 뷰리졸버(BeanNameViewResolver)에 의해서 다시 매핑을 시도할것이다. 설정이 어째 중복되는듯해서 찜찜하지만, 어노테이션으로 AbstractExcelView를 확장한 각종 Excel뷰를 매핑하기 위해 어쩔수는 선택이였다.
ContentNegotiatingViewResolver 를 제대로 알면, 우화한 방법이 있을듯 한데... ContentNegotiatingViewResolverTests.java 를 보면서 좀더 학습해야 할듯 하다.
<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"/>
<entry key="xls" value="#{ themeExcelView.getContentType() }"/>
<entry key="xls" value="#{ themeExcelView.getContentType() }"/>
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
안된다. 무슨 이유인지 viewResolvers 들이 제대로 동작 하지 않는다. 아마도 적절한 key(Header)를 찾지 못하여 매핑이 이루어 지지 않는듯 하다. 해서, ContentNegotiatingViewResolver 에서 매핑되지 않는것을 다시 BeanNameViewResolver로 매핑하게 하면 해결된다. 즉 아래처럼 설정하면,
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="xml" value="text/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="viewResolvers">
<list>
<ref bean="beanNameViewResolver"/>
<ref bean="internalResourceViewResolver"/>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="order" value="1"/>
<property name="ignoreAcceptHeader" value="true"/>
</bean>
<bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="2"/>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>
ContentNegotiatingViewResolver 에서 매핑되지 않은 뷰들은 아래 뷰리졸버(BeanNameViewResolver)에 의해서 다시 매핑을 시도할것이다. 설정이 어째 중복되는듯해서 찜찜하지만, 어노테이션으로 AbstractExcelView를 확장한 각종 Excel뷰를 매핑하기 위해 어쩔수는 선택이였다.
ContentNegotiatingViewResolver 를 제대로 알면, 우화한 방법이 있을듯 한데... ContentNegotiatingViewResolverTests.java 를 보면서 좀더 학습해야 할듯 하다.
'개발관련' 카테고리의 다른 글
Spring Roo에 대한 오해(2) : 생산성이 극대화 된다(?) (0) | 2011.10.17 |
---|---|
Spring Roo에 대한 오해(1) : 단순한 프로젝트만 가능하다? (0) | 2011.10.11 |
ContentNegotiatingViewResolver + AbstractExcelView 예제 (1) | 2011.09.22 |
Jeus5.0 에서 Spring3 사용시 문제 (0) | 2011.09.05 |
Flex(ActionScript) ExternalInterface.call 혹은 addCallback 예제 (0) | 2011.09.01 |
spirng-roo-addon-max OSGi bundle 업데이트 방법 (0) | 2011.08.26 |
댓글을 달아 주세요
역시 윤부장님 정보가 깔끔하구먼요 ㅋㅋㅋ '-')b