论坛首页 Java企业应用论坛

在spring MVC中配置多个视图

浏览 12967 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-04  
如果在一个项目中有人比较喜欢用freemarker,而有人对JSTL(Jsp标准标记库)比较熟,那就得配置多种视图的方式!
1.首先在web.xml,配置多个Dispatcher,不同视图当然转发不一样!

web.xml
<servlet-name>fm</servlet-name>
	  <servlet-class>
	    org.springframework.web.servlet.DispatcherServlet
	  </servlet-class>
	  <load-on-startup>1</load-on-startup>
	</servlet>	   
	<servlet-mapping>
	  <servlet-name>jstl</servlet-name>
	  <url-pattern>/*.do</url-pattern>
	</servlet-mapping>	   
	<servlet-mapping>
	  <servlet-name>fm</servlet-name>
	  <url-pattern>/*.fm</url-pattern>
	</servlet-mapping>
	<servlet>


2.然后再配置*-servlet文件

jstl-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="simpleUrlHandlerMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.do">showCon</prop>
           </props>
       </property>
    </bean>
  <bean name="showCon"   class="test.mvc.web.ShowController"/> 
  <bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix"><value>/WEB-INF/template/jsp/</value></property>
    <property name="suffix"><value>.jsp</value></property>
    <property name="viewClass">
      <value>org.springframework.web.servlet.view.JstlView</value>
    </property>
  </bean>  
</beans>


fm-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="simpleUrlHandlerMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.fm">showCon</prop>
           </props>
       </property>
    </bean>
	<bean name="showCon"   class="test.mvc.web.ShowController"/>    
	<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	 <property name="suffix"><value>.fm</value></property>
	  <property name="viewClass">
	   <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
	  </property>
	  <property name="contentType"><value>text/html; charset=gb2312</value></property>
	</bean>  
</beans>

两个视图都调用test.mvc.web.ShowController,所以即使全部换了视图层,也不影响到控制层的东西,这就是spring MVC强大之一!
   发表时间:2006-11-04  
好,看来喜欢SpringMVC的越来越多了
过些天写个帖子总结SpringMVC对Validator和国际化的支持
或者楼主想写也行
0 请登录后投票
   发表时间:2006-11-28  
如果映射的数据库表的一个字段为:private Byte startIni;

我呢在freemarker中这样写:
<td class='small' ><#if bmBase.startIni=0>完成<#else>完成</#if></td>

为什么老是报错呢?
The only legal comparisons are between two numbers, two strings, or two dates. Left hand operand is a freemarker.template.SimpleScalar Right hand operand is a freemarker.template.SimpleNumber

好像比较的是只能是二个numbers,二个String,二个two dates,那对于我的Byte怎么写呢?
0 请登录后投票
   发表时间:2006-12-02  
配置多个ViewResolver就可以了,没必要配置多个DispatcherServlet,当然楼主这么做也可以,但会增加配置复杂度,实际上Spring MVC中View跟DispatherServlet之间除了viewName外,没有太大关系
0 请登录后投票
   发表时间:2006-12-02  
可能出现的问题就不说了。可以看看spring 2.0那个国际化例子。
ResourceBundleViewResolver

这种编码方式最好不要尝试。

http://www.jactiongroup.net/reference2/html/mvc.html#mvc-viewresolver-chaining
当在一个web应用中混合使用不同的视图技术时,你可以使用ResourceBundleViewResolver:

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views"/>
    <property name="defaultParentView" value="parentView"/>
</bean>
ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。同样,[视图名].url所对应的值是该视图所对应的URL。从上面的例子里你也可以发现,你可以指定一个parent view,其它的视图都可以从parent view扩展。用这种方法,你可以声明一个默认的视图。

关于视图缓存的注意事项 --继承AbstractCachingViewResolver的解析器可以缓存它曾经解析过的视图。当使用某些视图技术时,这可以大幅度的提升性能。你也可以关掉缓存功能,只要把cache属性设成false就可以了。而且,如果你需要在系统运行时动态地更新某些视图(比如,当一个Velocity模板被修改了),你可以调用removeFromCache(String viewName, Locale loc)方法来达到目的。
0 请登录后投票
   发表时间:2007-01-29  
flyspider 写道
配置多个ViewResolver就可以了,没必要配置多个DispatcherServlet,当然楼主这么做也可以,但会增加配置复杂度,实际上Spring MVC中View跟DispatherServlet之间除了viewName外,没有太大关系



不配置多个 DispatcherServlet  不就没法做到 *.jstl的去 jstl界面, *.fm的去 fm界面了么?


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics