ovi*_*iro 6 spring jsp tiles classpath spring-webflow
这个不是很短,所以请耐心等待.
我正在开发一个使用Spring 3.0,Apache Tiles 2.2和Spring WebFlow 2.2的Web应用程序.一个重要的要求是它需要非常模块化,这意味着每个应用程序模块将作为单独的Jar文件提供.这可以通过类路径加载资源和配置来完成.
我想在这个jar文件中捆绑模块的所有类,bean配置,视图定义,流定义和jsp页面.前两个是微不足道的.
对于接下来的2个我找到的解决方案:
流定义
base-path可以从类路径加载
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="classpath:/org/example/webflow/samples">
<webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>
Run Code Online (Sandbox Code Playgroud)
视图定义
TilesConfigurer也可以通过类路径加载
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>classpath:/org/example/**/tiles/tile-views.xml</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
唯一剩下的就是解析页面,最好通过以下方式:
<definition name="myPage" extends="main">
<put-attribute name="header" value="classpath:/org/example/pages/headers/view_events.jsp" />
<put-attribute name="siteContent" value="classpath:/org/example/pages/admin/view_events.jsp" />
<put-attribute name="footer" value="classpath:/org/example/pages/blank.jsp" />
</definition>
Run Code Online (Sandbox Code Playgroud)
有没有办法达到预期的效果?我通过搜索得到的最接近的是Apache Tiles通配符支持和EL支持,但它不是我需要的.
提前致谢.
我有一些与你描述的非常相似的东西。我解决了将“tiles-el”添加到我的 pom.xml 中的问题,然后只需在我的图块定义上将“值”切换为“表达式”即可
<definition name="mypage" extends="main">
<put-attribute name="header" expression="${header}"/>
Run Code Online (Sandbox Code Playgroud)
您甚至可以像这样在表达式上使用简单的条件
<put-attribute name="header" expression="/WEB-INF/layouts/${bean.field ? 'path1/' : 'path2/'}header.jsp">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3693 次 |
| 最近记录: |