如何配置Spring和Apache Tiles定义以从classpath解析jsps

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支持,但它不是我需要的.
提前致谢.

mav*_*ick 2

我有一些与你描述的非常相似的东西。我解决了将“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)