spring MVC 配置多视图模块,多输出格式

spring mvc 可能要配置多个视图模式,比方说需求要求有jsp和freemarker 2种输出文件格式。freemarker可以自己定制

xml|json|html等。
面对这样的需求,显然单纯的mvc的jsp视图模板是不够的,所以需要spring对freemarker进行支持。
对于这样的问题,有多种解决方案,就我用过的2中说说吧:
1:使用org.springframework.web.servlet.view.ResourceBundleViewResolver
直接上代码:

<!--配置一个ResourceBundleViewResolver 配置一个spring-views.properites 文件(必须在根目录) 加载的顺序是最优先

"order = 0" -->
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="spring-views" />
<property name="order" value="0" />
</bean>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

<property name="templateLoaderPath">
<value>/WEB-INF/views/modules</value>
</property>
</bean>

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


spring-views.properties:

articles.(class)=org.springframework.web.servlet.view.JstlView
articles.url=articles.jsp

module-content-articles.(class)=org.springframework.web.servlet.view.freemarker.FreeMarkerView
module-content-articles.url=modules/content/html/articles.ftl

这里的class指定的是解析的视图类,url指定的是视图页面。

Controller类中请求方式:

return "module-content-articles";



我用的是另一种配置多视图的方式:


<!--
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="spring-views" />
<property name="order" value="0" />
</bean>-->

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath">
<value>/WEB-INF/views/modules</value>
</property>
</bean>

<bean id="xmlviewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".xml.ftl" />
<property name="contentType" value="text/xml;charset=UTF-8"></property>
</bean>

<bean id="htmlviewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".html.ftl" />
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>

<bean id="jsonviewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".json.ftl" />
<property name="contentType" value="application/text;charset=UTF-8"></property>
</bean>

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

这样就没有使用org.springframework.web.servlet.view.ResourceBundleViewResolver了,这样的话spring-views.properties文

件就没有存在的意义了。


Controller类:

return "content/"+format+"/articles";


目录结构
[img]http://dl.iteye.com/upload/picture/pic/76514/34e98896-5bda-3356-a47a-7e2cf56cb814.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值