论坛首页 Java版 Spring

Spring MVC如何配置多视图链

浏览 1057 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-05-24 关键字: SPring MVC
最近我在用Spring开发项目,用到jsp以及FreeMarker模板引擎,但是总是发生冲突的问题,下面是我的在web.xml
中的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<!-- ======================================================== -->
	<!--                  Spring MVC Config Servlet               -->
	<!-- ======================================================== -->
	<servlet>
		<display-name>
			This is the display name of my J2EE component
		</display-name>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	
	<!-- ======================================================== -->
	<!--                  Spring MVC Config Mapping               -->
	<!-- ======================================================== -->
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*.view</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>

	<jsp-config>
		<taglib>
			<taglib-uri>/spring</taglib-uri>
			<taglib-location>/WEB-INF/spring.tld</taglib-location>
		</taglib>
	</jsp-config>
</web-app>

下面是关于SpringBean的配置文件:
<?xml version="1.0" encoding="GB2312"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">

	<!-- ===================================================== -->
	<!--                 Show Exception Page                   -->
	<!-- ===================================================== -->

	<!-- ===================================================== -->
	<!--           ViewResolver For FreeMarker                 -->
	<!-- ===================================================== 
		<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="cache">
		<value>true</value>
		</property>
		<property name="suffix">
		<value>.ftl</value>
		</property>
		<property name="exposeRequestAttributes">
		<value>true</value>
		</property>
		<property name="exposeSessionAttributes">
		<value>true</value>
		</property>
		<property name="exposeSpringMacroHelpers">
		<value>true</value>
		</property>
		<property name="contentType">
		<value>text/html; charset=GB2312</value>
		</property>
		<property name="order">
		<value>1</value>
		</property>
		</bean>-->
	<!-- ===================================================== -->
	<!--    ViewResolver For FreeMarkerConfigurer              -->
	<!-- ===================================================== 
		<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath">
		<value>/WEB-INF/FTL/</value>
		</property>
		<property name="defaultEncoding">
		<value>GB2312</value>
		</property>
		<property name="freemarkerSettings">
		<props>
		<prop key="template_update_delay">3600</prop>
		</props>
		</property>
		</bean>-->
	<!-- ===================================================== -->
	<!--                 ViewResolver For JSP                  -->
	<!-- ===================================================== -->
	<bean id="JSPViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix">
			<value>/WEB-INF/JSP/</value>
		</property>
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>

	<bean id="IndexController" class="sprinl.mvc.IndexController">
		<property name="messages">
			<value>我的第一个Spring-View例子--要给我鼓励</value>
		</property>
		<property name="page">
			<value>home</value>
		</property>
	</bean>

	<bean id="presonController" class="sprinl.mvc.PresonController">
		<property name="page">
			<value>preson</value>
		</property>
	</bean>

	<bean id="welcomeController" class="sprinl.mvc.WelcomeController">
		<property name="viewName">
			<value>welcome</value>
		</property>
	</bean>

	<bean id="simpleUrlHandlerMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/home.view">IndexController</prop>
				<prop key="/welcome.view">welcomeController</prop>
				<prop key="/preson.view">presonController</prop>
			</props>
		</property>
	</bean>
</beans>

在同时试用的情况下,只能用一种视图解析器解析,当我把Freemarker解析器loader前置,jsp就会访问失败,请问 如何配置JSP + FreeMarker 解析器同同时工作的情况

    
   
时间:2007-05-24
这个需要你自己重新写 ViewResolver 让他在找不到文件(jsp,ftl)的时候 返回 null
这样 mvc 就会去找 下一个了,现在你配的 2个 ViewResolver 默认 都会返回一个 view 对象的。
   
0 请登录后投票
时间:2007-11-12
Sunteya 写道
这个需要你自己重新写 ViewResolver 让他在找不到文件(jsp,ftl)的时候 返回 null
这样 mvc 就会去找 下一个了,现在你配的 2个 ViewResolver 默认 都会返回一个 view 对象的。


我也遇到同样的问题啦。到底怎么解决?请指点!
   
0 请登录后投票
时间:2008-05-09
View  view = null;

for(ViewResolver vr:viewResolvers)
{
   view = vr.resolverView(..); // 但是,这里抛出异常的话,下一个ViewResolver就不会被启用了
   if(view != null)
   {
       break;
   }
}
   
0 请登录后投票
时间:2008-05-09
混用多种视图要用ResourceBundleViewResolver。
   
0 请登录后投票
论坛首页 Java版 Spring

跳转论坛:
JavaEye推荐
    快速回复 引用上一条消息 (Alt+S)