IT教程 | 加入收藏 | 简体 | 繁体
GUI编程:Java基础StrutsSpringHibernateIbatis框架整合GUI编程Ejb分布式开发
当前位置: 首页 > Java教程 > GUI编程

FreeMarker模板在模板里对sequences和hashes初始化

2014-02-13来源:[www.121ask.com]热度:0℃ 【字体:

FreeMarker模板在模板里对sequences和hashes初始化:

在模板里对sequences和hashes初始化 
sequences 

1. [“you”,”me”,”he”] 
2. 1..100 
3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, 
{“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}, 



hashes      {“you”:”a”,”me”:”b”,”he”:”c”} 


注释标志 
<#-- 
这里是注释 
--> 
旧版本的freemarker采用的是<#comment> 注释 </#comment>方法 

sequences内置方法 
sequence?first 
返回sequence的第一个值;前提条件sequence不能是null 
sequence?last 
返回sequence最后一个值 
sequence?reverse 
反转sequence的值 
sequence?size 
返回sequence的大小 
sequence?sort 
对sequence按里面的对象toString()的结果进行排序 
sequence?sort_by(value) 
对sequence 按里面的对象的属性value进行排序 
如: sequence里面放入的是10 个user对象,user对象里面包含name,age等属性 
sequence?sort_by(name) 表示所有的user按user.name进行排序 
hashes内置方法 
hash?keys 
返回hash里的所有keys, 返回结果类型sequence 
hash?values 
返回hash里的所有value, 返回结果类型sequence 
4 freemarker在web开发中注意事项 
freemarker与webwork整合 
web中常用的几个对象 
Freemarker的ftl文件中直接使用内部对象: 
${Request ["a"]} 
${RequestParameters["a"]} 
${Session ["a"]} 
${Application ["a"]} 
${JspTaglibs ["a"]} 

与webwork整合之后 通过配置的servlet 已经把request,session等对象置入了数据模型中 
在view中存在下面的对象 
  我们可以在ftl中${req}来打印req对象 
· req - the current HttpServletRequest 
· res - the current HttpServletResponse 
· stack - the current OgnlValueStack 
· ognl - the OgnlTool instance 
· webwork - an instance of FreemarkerWebWorkUtil 
· action - the current WebWork action 
· exception - optional the Exception instance, if the view is a JSP exception or Servlet exception view 
view中值的搜索顺序 
${name}将会以下面的顺序查找name值 
· freemarker variables 
· value stack 
· request attributes 
· session attributes 
· servlet context attributes 
在模板里ftl里使用标签 
注意,如果标签的属性值是数字,那么必须采用nubmer=123方式给属性赋值 
JSP页面 
<%@page contentType="text/html;charset=ISO-8859-2" language="java"%> 
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> 
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> 

<html> 
  <body> 
    <h1><bean:message key="welcome.title"/></h1> 
    <html:errors/> 
    <html:form action="/query"> 
      Keyword: <html:text property="keyword"/><br> 
      Exclude: <html:text property="exclude"/><br> 
      <html:submit value="Send"/> 
    </html:form> 
  </body> 
</html> 
模板ftl页面 
<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]> 
<#assign bean=JspTaglibs["/WEB-INF/struts-bean.tld"]> 

<html> 
  <body> 
    <h1><@bean.message key="welcome.title"/></h1> 
    <@html.errors/> 
    <@html.form action="/query"> 
      Keyword: <@html.text property="keyword"/><br> 
      Exclude: <@html.text property="exclude"/><br> 
      <@html.submit value="Send"/> 
    </@html.form> 
  </body> 
</html> 
 [NextPage]

如何初始化共享变量 
1. 初始化全局共享数据模型 
freemark在web上使用的时候对共享数据的初始化支持的不够,不能在配置初始化的时候实现,而必须通过ftl文件来初始化全局变量。这是不能满主需求的,我们需要在servlet init的时候留出一个接口来初始化系统的共享数据 
具体到和webwork整合,因为本身webwork提供了整合servlet,如果要增加全局共享变量,可以通过修改 com.opensymphony.webwork.views.freemarker.FreemarkerServlet来实现,我们可以在这个 servlet初始化的时候来初始化全局共享变量 
与webwork整合配置 
配置web.xml 
<servlet> 
    <servlet-name>freemarker</servlet-name> 
    <servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class> 
    <init-param> 
      <param-name>TemplatePath</param-name> 
<param-value>/</param-value> 
<!—模板载入文件夹,这里相对context root,递归获取该文件夹下的所有模板--> 
    </init-param> 
    <init-param> 
      <param-name>NoCache</param-name> <!—是否对模板缓存--> 
      <param-value>true</param-value> 
    </init-param> 
    <init-param> 
      <param-name>ContentType</param-name> 
      <param-value>text/html</param-value> 
    </init-param> 
    <init-param> 
<param-name>template_update_delay</param-name> 
<!—模板更新时间,0表示每次都更新,这个适合开发时候--> 
      <param-value>0</param-value> 
    </init-param> 
    <init-param> 
      <param-name>default_encoding</param-name> 
      <param-value>GBK</param-value> 
    </init-param> 
    <init-param> 
      <param-name>number_format</param-name> 
      <param-value>0.##########</param-value><!—数字显示格式--> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>freemarker</servlet-name> 
    <url-pattern>*.ftl</url-pattern> 
  </servlet-mapping> 

以上IT文章《FreeMarker模板在模板里对sequences和hashes初始化》由名客技术网[www.121ask.com]提供阅读!
名客技术网是一个免费为广大IT技术人员提供IT教程,绿色软件,asp/php/jsp/java/net等实例视频教程,CMS教程,破解软件下载以及学习相关源码、知识的IT网站。
名客技术网如果无意之中侵犯了您的版权,请来电告知,本站将在3个工作日内删除 QQ:175352796
Copyright 2011-2017 Powered by 121ASK.COM, All Rights Reserved.
备案号:鄂ICP备11013833号-3