使用Spring Webflow + Tiles:如何指定在运行时使用哪些tile定义?

时间:2011-08-03 09:29:20

标签: java jsp tiles spring-webflow

我有一个运行Spring Webflow,Tiles和JSP的Web应用程序。

目前所有页面都在扩展我的“defaultLayout”定义(包含横幅,菜单结构,页脚等)。

在图块定义文件中:

<definition name="defaultLayout" template="/WEB-INF/tiles/defaultLayout.jsp"/>

<definition name="_**.view.jsp" extends="defaultLayout">
    <put-attribute name="content" value="{1}.view.jsp"/>
</definition>

新要求是拥有“嵌入式”视图(没有页脚/菜单/等)。我创建了一个嵌入式视图定义:

<definition name="embeddedLayout" template="/WEB-INF/tiles/embeddedLayout.jsp"/>
<definition name="_**.embedded.view.jsp" extends="embeddedLayout">
    <put-attribute name="content" value="{1}.view.jsp"/>
</definition>        

我有JSP文件,用于指定页面的主要内容(全部名称为:pageName.view.jsp)。

现在我需要的是让tile渲染pageName.embedded.view.jsp(将使用embeddedLayout)而不是pageName.view.jsp基于某个要求的某种方式(还没有弄清楚那可能是一个请求传入的参数或该效果的东西)。

我对tile的内部工作方式不太熟悉我可以覆盖什么类来更改pageName.view.jsp而不是pageName.embedded.view.jsp?

以下是我的相关Spring配置:

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/tiles-defs.xml</value>
        </list>
    </property>
</bean>

<bean id="webflowViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers">
        <bean class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
            <property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView"/>
            <property name="prefix" value="_"/>
        </bean>
    </property>
</bean>

任何帮助将不胜感激。

Tiles版本:2.2.1 春季版:3.0.3 Webflow版本:2.1.1

1 个答案:

答案 0 :(得分:0)