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")}会报错  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值