`
weishuwei
  • 浏览: 324747 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork笔记之freemarker

阅读更多
 
  1. <#assign ww=JspTaglibs["/WEB-INF/lib/webwork.tld"] />  
  2. 现在tld文件一般都打在webwork包里了,我从jar的META-INF目录下找到taglib.tld文件,把他放到  
  3. lib目录下,改名为webwork.tld  
  4. =========================================================================  
  5. <@ww.form action="transfer4">  
  6.     <@ww.token/>  
  7.     <@ww.textfield label="Amount" name="amount" required="true" value="400"/>  
  8.     <@ww.hidden name="'id'" />  
  9.     <@ww.textarea label="'Details'" name="'details'" rows=5 cols=40 />  
  10.     <@ww.submit value="Transfer money"/>  
  11. <!---->@ww.form>  
  12. =========================================================================  
  13. <@c.html "登陆">  
  14. <form action="login.action" method="post">  
  15. <@c.input id="username" name="username" size="12" maxlength="12"  
  16.  value="${username?default('')}"/>  
  17. <@c.input type="submit" value="登u24405 "/>  
  18. <!---->form>  
  19. <!---->@c.html>  
  20. =======标签=================================================================  
  21. <%@ taglib prefix = "ww" uri = "/webwork" %>注意斜杠,之前版本是没斜杠的  
  22. <ww:property value=""/>value指定了要读取的Model对象的属性名  
  23. <ww:property value="#session['username']"/>  
  24. <ww:property value="user.username"/>  
  25. parameter['username']-----request.getParameter("username");  
  26. request['username']------request.getAttribute("username");  
  27. session['username']---------  
  28. application['username']---------  
  29. 这些特殊的要要#操作符引用。对于常量,要用单引号包围。  
  30.   
  31. <ww:iterator value="message" status="index">  
  32. <ww:if test="#index.odd==true">  
  33. <ww:property/><br/>  
  34. <!---->ww:if>  
  35. <ww:else>  
  36. <ww:property/><br/>  
  37. <!---->ww:else>  
  38. 索引变量提供了以下几个常用判定方法:  
  39. first   
  40. last  
  41. odd奇数  
  42. even当前迭代次数是否是偶数  
  43. 引用如:#index.odd  
  44. <ww:elseif test=""><!---->ww:elseif>  
  45. <ww:if test="error!=null"><!---->ww:if>  
  46. =========================================================================  
  47. 在FreeMarker中,好像要使用Request.Session才行,如Request.enable,Session.name?if_exists  
  48.   
  49. 转换${1.1?int}  
  50. ${aa?c}作用把String转换为数字,因为freemarker默认的会采用科学计数法,比如1,000,000  
  51. html:对字符串进行HTML编码   
  52. cap_first:使字符串第一个字母大写   
  53. lower_case:将字符串转换成小写   
  54. upper_case:将字符串转换成大写   
  55. trim:去掉字符串前后的空白字符   
  56. size:获得序列中元素的数目   
  57. int:取得数字的整数部分(如-1.9?int的结果是-1)  
  58.   
  59. <#if s?exists>  
  60. ${s?if_exists}  
  61. exists用在逻辑判断,而if_exists用来打印东西时用到,如果存在打印,不存在打印空字符串.  
  62. exp1?exists将会被exp1??代替  
  63. exp1?if_exists将会被exp1!代替  
  64. exp1?default(exp2)将会被exp1!exp2,这些在2.4版本中会体现到??  
  65.   
  66. ****FreeMarker**************************************************************************************  
  67. <#if errorMsg?exists && errorMsg.length() != 0>  
  68. <li>${errorMsg}<!---->li>  
  69. <!---->#if>  
  70. ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}  
  71. ${foo?string("yes", "no")}//foo为true,返回yes,否则返回false  
  72.  <#list 1..count as x>  
  73.     ${y} ${count}/${x}: <#nested>  
  74.   <!---->#list>  
  75. exp?substring(from, toExclusive)  
  76. exp?substring(from)  
  77.   
  78. 针对数字的内建对象:c:这个内建对象转换数字为字符串。    
  79. ==================================================================================  
  80. webwork中针对数字,freemarker默认采用科学计数法显示;我们可以在freemarker.properties里定义格式如:  
  81. #0表示是阿拉伯数字  
  82. number_format=0  
  83. #时间格式设置  
  84. date_format=yyyy-MM-dd HH:mm  
  85. 我在类里面定义了一个Util.Date类型的,如Date birth;在页面上我用${date?if_exists?datetime}显示;  
  86. 当然,如果在配置文件中没有配置时间格式,可以采用以下的方式达到想要的结果:  
  87. ${date?if_exists?string("yyyy-MM-dd HH:mm")}  
  88.   
  89. <#if type == "password">  
  90. <#elseif type == "calendar">  
  91. <#else>  
  92. <!---->#if>  
  93.   
  94. Welcome ${user!}!  
  95. Welcome ${user!'your name'}!  
  96.   
  97. 如果user找不到值,会输出  
  98. Welcome !  
  99. Welcome your name!  
  100.   
  101. ${user?if_exists}  
  102. ${user?default('your name')}  
  103. =========================================================================  
  104. private SimpleDateFormat df = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss");  
  105. private final Calendar lastModifiedCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));  
  106. private final String lastModified = df.format(lastModifiedCal.getTime());  
  107. Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));  
  108. response.setHeader("Date",df.format(cal.getTime())+" GMT");  
  109. cal.add(Calendar.DAY_OF_MONTH,1);  
  110. response.setHeader("Expires",df.format(cal.getTime())+" GMT");  
  111. response.setHeader("Retry-After",df.format(cal.getTime())+" GMT");  
  112. response.setHeader("Cache-Control","public");  
  113. response.setHeader("Last-Modified",lastModified+" GMT");  
  114. =========================================================================  
  115. FreeMarker中对方法的调用  
  116. 1,无参方法使用  
  117. 我们只要定义一个get方法,如:  
  118. public String getTest(){  
  119.     return "weishuwei";  
  120. }  
  121.   
  122. 然后我们在页面就可以用${test}调用了,注意不能用${getTest()},test前必须用get前缀  
  123. 2,带参方法使用  
  124.  public String getMytest(String str){  
  125.     return str;  
  126. }  
  127. 带参方法不能直接使用,必须用个变量去调用它如:${courseHelper.getMytest("wei")},直接${getMytest("wei")}会报错  
分享到:
评论

相关推荐

    WebWork2学习笔记

    视图层在WebWork2中通常是JSP或FreeMarker模板。WebWork2通过OGNL(Object-Graph Navigation Language)表达式语言来传递数据到视图,使得视图能够轻松地访问Action上下文中的任何对象。 在学习WebWork2时,理解...

    webwork学习笔记(全)

    ServletDispatcher 是WebWork中的核心组件之一,它负责根据Action配置信息来分发请求,调用相应的Action方法,并将结果返回给客户端。它解析请求路径,查找匹配的Action映射,执行Action并根据返回的结果类型选择...

    webwork学习笔记

    ### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...

    webwork in action

    在学习WebWork的过程中,`笔记.pdf`可能是作者或读者整理的学习要点和心得,涵盖了书中关键概念的总结。`[www.whser.com]readme.txt`可能是一个网站的说明文档,提供了更多关于WebWork的在线资源或者示例代码。`JSP...

    struts2综合笔记

    - **发展历程**: Struts2 是在 WebWork 框架的基础上发展起来的,因此学习 Struts2 实际上也是学习 WebWork。 #### 二、Struts2 的核心组件分析 **控制器**: - **Servlet VS Filter**: - **Servlet**: - 在内存...

    struts2 学习重点笔记

    - **核心**:Struts2 的核心其实是 WebWork 2,它融合了 Struts 1 的一些优秀思想。 - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 ...

    Struts2学习笔记

    - **WebWork**:开源框架,强调面向对象的设计,引入了注解支持,并且可以使用多种视图技术,如JSP、FreeMarker和Velocity。 - **Struts2.x**:融合了Struts1.x和WebWork的优点,采用了拦截器架构,使得Action更加...

    [黑马程序员Struts2 2016版视频] 前3Days笔记

    Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,吸取了其他框架的优点,如WebWork,提供了更强大的功能和更优秀的性能。Struts2的核心是Action类,它作为控制器处理用户的请求,并通过配置文件与视图和...

    struts2学习笔记.doc

    - **Struts2的起源**:Struts2最初由WebWork和Struts1的核心开发者联合创建,其目的是为了弥补这两个框架的不足之处。 **1.2 开发环境配置** - **IDE选择**:Eclipse 3.2 + MyEclipse 5.5。 - **Servlet Container*...

    strut2学习笔记(自己整理适合新手入门)

    相比之下,WebWork框架引入了更松散耦合的设计,使得Action不再绑定Servlet API,便于进行单元测试。WebWork还支持多种表现层技术,如Velocity、FreeMarker和XSLT,而不仅仅是JSP。WebWork的核心控制器...

    struts项目学习笔记

    由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,没有实现,getter,setter方法)对象 作为Action,没有耦合 ...

    轻量级javaEE笔记

    Struts2采用拦截器(Interceptor)机制,增强了对AOP(面向切面编程)的支持,同时支持多种结果类型和模板技术,如FreeMarker、Velocity等,使得视图层的实现更为多样。 4. **Spring** Spring框架是JavaEE领域的...

    sshb笔记(注释)复习.doc

    Struts2 是一款强大的Java Web开发框架,由Webwork社区和Struts1社区合并而成,它继承了Webwork的优点并提供了许多改进。本篇笔记主要对比了Struts1和Struts2的区别,并深入讲解了Struts2中的文件上传和下载功能。 ...

    struts2学习笔记

    ### Struts2学习笔记知识点详解 #### 一、基础知识 **1. Struts2核心组件** - **XWork-2.0.5.jar**: 引入WebWork框架的核心功能,这是Struts2的一个重要组成部分,提供了请求处理的核心逻辑。 - **Commons-...

    struts2笔记 Word文档

    Struts2是Apache软件基金会下的一个项目,是Struts1的升级版本,它吸收了WebWork框架的优点,解决了Struts1在实际开发中遇到的一些问题。 首先,让我们深入了解一下Struts2的核心概念和特性: 1. **Action类**:在...

    Struts2基础学习44课时的笔记分享

    这个框架是Apache软件基金会的产品,它整合了多种其他框架的功能,如WebWork、Tiles和Commons等,为开发者提供了一种高效、灵活的开发方式。 在"Struts2基础学习44课时的笔记分享"中,你可以期待学习到以下几个关键...

Global site tag (gtag.js) - Google Analytics