Spring Webflow 2와 Apache Tiles 통합 [닫기]
-
22-07-2019 - |
문제
저는 최근 Spring Webflow 2를 사용하기 위해 일부 애플리케이션을 업그레이드하기 시작했으며 Webflow 2와 함께 제공되는 새로운 Ajax 기능을 사용하고 싶습니다.누군가 Tiles 2를 Spring Webflow와 통합하기 위한 튜토리얼로 안내해 줄 수 있습니까(그들이 권장하는 것이기 때문에).나는 이와 관련하여 Webflow 2와 함께 제공되는 문서가 전혀 쓸모가 없다는 것을 발견했습니다.
해결책
이것이 WebFlow 2 및 Tiles 2.0에서 작동하도록하기 위해 한 일입니다.
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs/templates.xml</value>
</list>
</property>
</bean>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/flow/**/*.html">
flowController
</prop>
<prop key="/**/*.html">viewController</prop>
</props>
</property>
<property name="order" value="1" />
</bean>
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean id="flowController"
class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor" />
</bean>
<webflow:flow-executor id="flowExecutor"
flow-registry="flowRegistry" />
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices"
base-path="/WEB-INF/flow/user">
<webflow:flow-location path="/manage-users.xml" />
</webflow:flow-registry>
<webflow:flow-builder-services id="flowBuilderServices"
view-factory-creator="viewFactoryCreator" />
<bean id="viewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="tilesViewResolver" />
</bean>
다른 팁
이것은 Ajax 기능을 정확하게 언급하지는 않지만 Apache Tiles 2가 규칙적인 흐름을 설정하는 데 도움이되었습니다.
http://jee-bpel-soa.blogspot.com/2008/12/spring-web-flows-2-and-tiles.html
더 많은 세부 사항이 링크에 있지만 필요한 핵심 비트는 새로운 View Resolver입니다.
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions" value="/WEB-INF/flows/main/main-tiles.xml" />
</bean>
문서에 완벽하게 설명되어 있습니다.그러니 제발 그렇지 않다고 말하지 마세요.
봄에 타일을 사용하는 방법:10.5 뷰 해상도(link + #spring-mvc-config-spring-view-solution)
봄에 타일과 함께 Ajax를 사용하는 방법:11.5:Ajax 요청 처리(링크 + #spring-js-ajax)
해당 링크에서 코드를 복사하면 다음과 같이 됩니다.
타일을 사용하기 위한 웹플로 구성:
<!-- Plugs in a custom creator for Web Flow views -->
<webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" />
<!-- Configures Web Flow to use Tiles to create views for rendering; Tiles allows for applying consistent layouts to your views -->
<bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="tilesViewResolver" />
</bean>
타일 구성:
<!-- Configures the Tiles layout system -->
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/views/layouts/page.xml</value>
<value>/WEB-INF/views/layouts/table.xml</value>
<value>/WEB-INF/views/globalViews.xml</value>
<value>/WEB-INF/views/userViews.xml</value>
</list>
</property>
</bean>
타일 + Ajax 구성:
<!--
- This bean configures the UrlBasedViewResolver, which resolves logical view names
- by delegating to the Tiles layout system. A view name to resolve is treated as
- the name of a tiles definition.
-->
<bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
<property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView" />
</bean>
제휴하지 않습니다 StackOverflow