`
- 浏览:
326916 次
- 性别:
- 来自:
上海
-
- <#assign ww=JspTaglibs["/WEB-INF/lib/webwork.tld"] />
- 现在tld文件一般都打在webwork包里了,我从jar的META-INF目录下找到taglib.tld文件,把他放到
- lib目录下,改名为webwork.tld
- =========================================================================
- <@ww.form action="transfer4">
- <@ww.token/>
- <@ww.textfield label="Amount" name="amount" required="true" value="400"/>
- <@ww.hidden name="'id'" />
- <@ww.textarea label="'Details'" name="'details'" rows=5 cols=40 />
- <@ww.submit value="Transfer money"/>
- <!---->@ww.form>
- =========================================================================
- <@c.html "登陆">
- <form action="login.action" method="post">
- <@c.input id="username" name="username" size="12" maxlength="12"
- value="${username?default('')}"/>
- <@c.input type="submit" value="登u24405 "/>
- <!---->form>
- <!---->@c.html>
- =======标签=================================================================
- <%@ taglib prefix = "ww" uri = "/webwork" %>注意斜杠,之前版本是没斜杠的
- <ww:property value=""/>value指定了要读取的Model对象的属性名
- 如<ww:property value="#session['username']"/>
- 或<ww:property value="user.username"/>
- parameter['username']-----request.getParameter("username");
- request['username']------request.getAttribute("username");
- session['username']---------
- application['username']---------
- 这些特殊的要要#操作符引用。对于常量,要用单引号包围。
-
- <ww:iterator value="message" status="index">
- <ww:if test="#index.odd==true">
- <ww:property/><br/>
- <!---->ww:if>
- <ww:else>
- <ww:property/><br/>
- <!---->ww:else>
- 索引变量提供了以下几个常用判定方法:
- first
- last
- odd奇数
- even当前迭代次数是否是偶数
- 引用如:#index.odd
- <ww:elseif test=""><!---->ww:elseif>
- <ww:if test="error!=null"><!---->ww:if>
- =========================================================================
- 在FreeMarker中,好像要使用Request.Session才行,如Request.enable,Session.name?if_exists
-
- 转换${1.1?int}
- ${aa?c}作用把String转换为数字,因为freemarker默认的会采用科学计数法,比如1,000,000
- html:对字符串进行HTML编码
- cap_first:使字符串第一个字母大写
- lower_case:将字符串转换成小写
- upper_case:将字符串转换成大写
- trim:去掉字符串前后的空白字符
- size:获得序列中元素的数目
- int:取得数字的整数部分(如-1.9?int的结果是-1)
-
- <#if s?exists>
- ${s?if_exists}
- exists用在逻辑判断,而if_exists用来打印东西时用到,如果存在打印,不存在打印空字符串.
- exp1?exists将会被exp1??代替
- exp1?if_exists将会被exp1!代替
- exp1?default(exp2)将会被exp1!exp2,这些在2.4版本中会体现到??
-
- ****FreeMarker**************************************************************************************
- <#if errorMsg?exists && errorMsg.length() != 0>
- <li>${errorMsg}<!---->li>
- <!---->#if>
- ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}
- ${foo?string("yes", "no")}//foo为true,返回yes,否则返回false
- <#list 1..count as x>
- ${y} ${count}/${x}: <#nested>
- <!---->#list>
- exp?substring(from, toExclusive)
- exp?substring(from)
-
- 针对数字的内建对象:c:这个内建对象转换数字为字符串。
- ==================================================================================
- webwork中针对数字,freemarker默认采用科学计数法显示;我们可以在freemarker.properties里定义格式如:
- #0表示是阿拉伯数字
- number_format=0
- #时间格式设置
- date_format=yyyy-MM-dd HH:mm
- 我在类里面定义了一个Util.Date类型的,如Date birth;在页面上我用${date?if_exists?datetime}显示;
- 当然,如果在配置文件中没有配置时间格式,可以采用以下的方式达到想要的结果:
- ${date?if_exists?string("yyyy-MM-dd HH:mm")}
-
- <#if type == "password">
- <#elseif type == "calendar">
- <#else>
- <!---->#if>
-
- Welcome ${user!}!
- Welcome ${user!'your name'}!
-
- 如果user找不到值,会输出
- Welcome !
- Welcome your name!
-
- ${user?if_exists}
- ${user?default('your name')}
- =========================================================================
- private SimpleDateFormat df = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss");
- private final Calendar lastModifiedCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
- private final String lastModified = df.format(lastModifiedCal.getTime());
- Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
- response.setHeader("Date",df.format(cal.getTime())+" GMT");
- cal.add(Calendar.DAY_OF_MONTH,1);
- response.setHeader("Expires",df.format(cal.getTime())+" GMT");
- response.setHeader("Retry-After",df.format(cal.getTime())+" GMT");
- response.setHeader("Cache-Control","public");
- response.setHeader("Last-Modified",lastModified+" GMT");
- =========================================================================
- FreeMarker中对方法的调用
- 1,无参方法使用
- 我们只要定义一个get方法,如:
- public String getTest(){
- return "weishuwei";
- }
-
- 然后我们在页面就可以用${test}调用了,注意不能用${getTest()},test前必须用get前缀
- 2,带参方法使用
- public String getMytest(String str){
- return str;
- }
- 带参方法不能直接使用,必须用个变量去调用它如:${courseHelper.getMytest("wei")},直接${getMytest("wei")}会报错
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
视图层在WebWork2中通常是JSP或FreeMarker模板。WebWork2通过OGNL(Object-Graph Navigation Language)表达式语言来传递数据到视图,使得视图能够轻松地访问Action上下文中的任何对象。 在学习WebWork2时,理解...
ServletDispatcher 是WebWork中的核心组件之一,它负责根据Action配置信息来分发请求,调用相应的Action方法,并将结果返回给客户端。它解析请求路径,查找匹配的Action映射,执行Action并根据返回的结果类型选择...
### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...
在学习WebWork的过程中,`笔记.pdf`可能是作者或读者整理的学习要点和心得,涵盖了书中关键概念的总结。`[www.whser.com]readme.txt`可能是一个网站的说明文档,提供了更多关于WebWork的在线资源或者示例代码。`JSP...
- **发展历程**: Struts2 是在 WebWork 框架的基础上发展起来的,因此学习 Struts2 实际上也是学习 WebWork。 #### 二、Struts2 的核心组件分析 **控制器**: - **Servlet VS Filter**: - **Servlet**: - 在内存...
- **核心**:Struts2 的核心其实是 WebWork 2,它融合了 Struts 1 的一些优秀思想。 - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 ...
- **WebWork**:开源框架,强调面向对象的设计,引入了注解支持,并且可以使用多种视图技术,如JSP、FreeMarker和Velocity。 - **Struts2.x**:融合了Struts1.x和WebWork的优点,采用了拦截器架构,使得Action更加...
Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,吸取了其他框架的优点,如WebWork,提供了更强大的功能和更优秀的性能。Struts2的核心是Action类,它作为控制器处理用户的请求,并通过配置文件与视图和...
- **Struts2的起源**:Struts2最初由WebWork和Struts1的核心开发者联合创建,其目的是为了弥补这两个框架的不足之处。 **1.2 开发环境配置** - **IDE选择**:Eclipse 3.2 + MyEclipse 5.5。 - **Servlet Container*...
它结合了WebWork的设计理念和Struts1的优点,形成了一个更强大、更灵活的框架。Struts2的核心是FilterDispatcher,它通过拦截器(Interceptor)机制处理请求,使得业务逻辑和视图展现分离,增强了可扩展性和测试能力...
### Unmi的Struts2学习笔记关键知识点解析 #### 一、Struts2与Struts1的主要区别 1. **架构上的变化**:Struts2并非Struts1的直接升级版,而是基于WebWork框架发展而来,这导致两者在设计哲学和技术实现上有很大...
由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,没有实现,getter,setter方法)对象 作为Action,没有耦合 ...
Struts2采用拦截器(Interceptor)机制,增强了对AOP(面向切面编程)的支持,同时支持多种结果类型和模板技术,如FreeMarker、Velocity等,使得视图层的实现更为多样。 4. **Spring** Spring框架是JavaEE领域的...
Struts2 是一款强大的Java Web开发框架,由Webwork社区和Struts1社区合并而成,它继承了Webwork的优点并提供了许多改进。本篇笔记主要对比了Struts1和Struts2的区别,并深入讲解了Struts2中的文件上传和下载功能。 ...
### Struts2学习笔记知识点详解 #### 一、基础知识 **1. Struts2核心组件** - **XWork-2.0.5.jar**: 引入WebWork框架的核心功能,这是Struts2的一个重要组成部分,提供了请求处理的核心逻辑。 - **Commons-...
Struts2是一个由权威人士精心整理的MVC框架,它源于Struts1和Webwork框架的融合,虽然沿用了Struts1的名字,但核心却是Webwork。这个框架的主要目标是提高Web开发的效率,通过提供一个半成品的架构来简化开发流程。 ...
Struts2是Apache软件基金会下的一个项目,是Struts1的升级版本,它吸收了WebWork框架的优点,解决了Struts1在实际开发中遇到的一些问题。 首先,让我们深入了解一下Struts2的核心概念和特性: 1. **Action类**:在...
这个框架是Apache软件基金会的产品,它整合了多种其他框架的功能,如WebWork、Tiles和Commons等,为开发者提供了一种高效、灵活的开发方式。 在"Struts2基础学习44课时的笔记分享"中,你可以期待学习到以下几个关键...