Spring webflow视图解析器配置:JSP文件的子文件夹

时间:2014-05-23 06:35:25

标签: spring jsp spring-webflow-2

使用Spring webflow并在serlvet配置中,我有这个用于JSP文件:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

这适用于流XML文件:

<webflow:flow-registry id="flowRegistry"
    flow-builder-services="flowBuilderServices">
    <webflow:flow-location-pattern value="/WEB-INF/flows/**/*-flow.xml" />
</webflow:flow-registry>

由于/**/,任何流XML文件都可能在子目录中或不在子目录中自动解析,所以我不需要在流定义中指定子文件夹。 对于JSP **似乎不起作用。

有没有办法做同样的事情?我想使用子目录,因为当不必滚动包浏览器中的JSP文件堆时,它使它看起来更干净。另一方面,如果我每次都必须指定子目录,那么可能很容易发现拼写错误

2 个答案:

答案 0 :(得分:0)

我不认为有一种方法可以在&#39;前缀&#39;中指定蚂蚁风格的通配符。或&#39;后缀&#39;属性。

正如您所说,您可以在流程定义中指定路径,如下所示

<view-state id="showSearchCriteria" view="customer/search">
    <transition on="lookupCriteriaEntered" to="searchCustomer" />
</view-state>

答案 1 :(得分:0)

虽然不是一个优雅的解决方案,但你可以使用瓷砖在jsp文件夹的多个子文件夹中尝试jsps:

    <bean id="viewResolver" 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>/WEB-INF/tilesDef.xml</value>
            </list>
          </property>
    </bean> 

将tilesDef.xml定义为:

    <tiles-definitions>     
        <definition name="page1" template="/WEB-INF/jsp/subFolder1/page1.jsp"/>
        <definition name="page2" template="/WEB-INF/jsp/subFolder2/page2.jsp"/>
    </tiles-definitions> 

在您的控制器中返回:

    new ModelAndView("page1");

或作为:

    new ModelAndView("page2");

但缺点是你不能在不同文件夹中有2个同名的jsps,因为定义名称是唯一的。