使用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文件堆时,它使它看起来更干净。另一方面,如果我每次都必须指定子目录,那么可能很容易发现拼写错误
答案 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,因为定义名称是唯一的。