Jeecms源码分析(三)

本节主要分析Spring + FreeMarker的集成。


先介绍一下 spring+freemarker的集成主要涉及以下配置项:

1、配置 FreeMarkerConfigurer

         ……    
 

通过 freemarkerSettings 属性,也能够设置其他 FreeMarker 的配置。例如, FreeMarker 默认每隔 5 秒检查模板是否被更新,如果已经更新了,就会重新加载并分析模板。但经常检查模板是否更新可能比较耗时。如果你的应用运行在生产模式下,而且你预期模板不会经常更新,则可以将更新的延迟时间延长至一个小时或者更久。

可以通过为 freemarkerSettings 属性设置 template_update_delay 达到这一目的。例如:

 

 

      

        3600

      

    
 

设置 template_update_delay 3600 (秒),因此 FreeMarker 只有在 1 个小时之后才检查模板是否更新。

 

2、解析 FreeMarker 视图



    .ftl

  
 

将请求和会话属性作为变量暴露给 FreeMarker 模板使用。要做到这一点,可以设置 exposeRequestAttributes 或者 exposeSessionAttributes true



      true

    

    

      true

    

 
 

使用这些宏,必须设置 FreeMarkerViewResolver exposeMacroHelpers 属性为 true

 



      true

    
 

 

3、 FreeMarker 中绑定表单域

 

<@spring.bind "command.phone" />

  phone: 

  ${spring.status.errorMessage}
<@spring.bind "command.email" /> email: ${spring.status.errorMessage}
 

4、最后,你还需要做一件事才能使用FreeMarker

<@spring.bindEscaped>的FreeMarker模板的顶部增加以下一行:

   <#import "/spring.ftl" as spring />

 
 

这一行会在模板中导入Spring的FreeMarker宏。

 

 

 

 

Jeecms中相关的配置文件如下----------------->:

总体说明:

 

1、定义FreeMaker引入文件,index.ftl前缀为p,spring.ftl的前缀为s,这样在饮用ftl模版的宏定义时,可以简略使用。

 

/WEB-INF/ftl/pony/index.ftl as p,/WEB-INF/ftl/spring.ftl as s

 在html表单中的使用,例如:

 

<@p.form id="jvForm" action="o_update.do" labelWidth="12"> <@p.td 。。。。

 

2、在jeecms中,请求回话属性都不允许暴露给freemarker使用。。(不知道是否跟freemarker不支持集群有关系????这样是否可以支持集群

 

....

	
	
....

 

以下是涉及到的配置文件:

  • web.xml 中的配置文件
....
       
		contextConfigLocation
		
			/WEB-INF/config/application-context.xml
			/WEB-INF/config/cache-context.xml
			/WEB-INF/config/captcha-context.xml
			/WEB-INF/config/jeecore-context.xml
			/WEB-INF/config/jeecms-context.xml
		
	

....
  • jeecms-context.xml

在这个配置文件中,freeMarkerConfigurer作为 StaticPageSvcImpl的一个属性,注入到这个类中。

freeMarkerConfigurer的配置包括freemarker定义的标签(见freemarkerVariables),freemarkerSettings中定义了一些详细的属性。

详见前面的描述。


		
		
			
				
					
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
					
				
				
				
					
						auto_detect
						5
						UTF-8
						UTF-8
						zh_CN
						true,false
						yyyy-MM-dd HH:mm:ss
						yyyy-MM-dd
						HH:mm:ss
						0.######
						true
						/WEB-INF/ftl/pony/index.ftl as p,/WEB-INF/ftl/spring.ftl as s
					
				
			
		
	
 
  • jeecms-servlet-admin.xml

   view resolver 配置:


		
		
		
		
		
		
	
 

freemarkerConfig 配置:

	
		
		
			
				
				
				
				
				
				
			
		
		
			
				0
				UTF-8
				UTF-8
				zh_CN
				true,false
				yyyy-MM-dd HH:mm:ss
				yyyy-MM-dd
				HH:mm:ss
				0.######
				true
				/ftl/pony/index.ftl as p,/ftl/spring.ftl as s
			
		
	
 
  • jeecms-servlet-front.xml ,

view resolver 配置:

 

	
		
		
		
		
	
 

freemarkerConfig 配置:参数配置与jeecms-servlet-admin.xml类似。


		
			
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
			
		
		
		
		
			
				auto_detect
				5
				UTF-8
				UTF-8
				zh_CN
				true,false
				yyyy-MM-dd HH:mm:ss
				yyyy-MM-dd
				HH:mm:ss
				0.######
				true
				
				/WEB-INF/ftl/pony/index.ftl as p,/WEB-INF/ftl/spring.ftl as s
			
		
	
 

至此,JeeCms中的FreeMarker的配置已经分析完毕。

你可能感兴趣的:(FreeMarker,CMS,Spring)