- 浏览: 1501088 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
struts2中theme属性包括xhtml,html,simple,ajax 。默认是xhtml
theme:设置struts2标签的主题,默认为xhtml。
theme=xhtml时:会默认额外生成tr,td。
theme=simple时:就生成标签所对应的html标签形式。
在默认情况下,表单元素是分布在不同行的。如下代码:
<s:form action="login2">
<s:textfield label="用户名" name="username"/>
<s:password label="密码" name="password"/>
<s:submit label="提交"/>
</s:form>
我们看着以上的代码跟HTML的差不了多少,但是因为struts2表单默认将表单内的每一个元素都分在单独的一行,label属性就如同我们在HTML中在<input type="text"/>前面的文字标签一样。如果我们不想让它自动换行,那就应该写成如下格式:
<s:form action="login2" theme="simple">
<s:textfield label="用户名" name="username"/>
<s:password label="密码" name="password"/>
<s:submit label="提交"/>
</s:form>
但在设置theme="simple"后,表单元素的label属性将失效,这时我们就得在表单元素前面加入想用label显示的文字。如:
<s:form action="login2" theme="simple">
用户名:<s:textfield label="用户名" name="username"/>
密码:<s:password label="密码" name="password"/>
<s:submit label="提交"/>
</s:form>
此时显示的为将不在是label中的值,而是显示文本框前面的文字,按钮则显示它原来的默认值:sbumit。
以下为扩充知识:
1. 模板目录->主题目录->主题(模板文件) 这是模板/主题的目录组织方式。以实际为例,打开 struts2-core-2.x.x.jar 可以看到里面有一个 template,在 template 下有5个目录 ajax、css_xhtml、simple、xhtml 和 archive,其中前四个分别是 ajax、css_xhtml、simple、xhtml 主题的目录,每个主题目录中有各自的模板文件,主要是 ftl 文件,还有 css 和 js 文件。最后一个 archive 是归档的主题目录,其下又有 ajax、simple、xhtml、模板文件是 .vm 文件。由此可知 Struts2 大力推荐的模板语言是 FreeMarker,而不是 Velocity,以后要好好看看 FreeMarker,只知道 FreeMarkder 更 XML 化。
2. 上面看到模板目录名是 template,是 struts2-core-2.x.x.jar 中,其实目录名是由 struts.ui.templateDir 常量来指定的,只是默认值是 template。意味着 Struts 2 从 Web 应用的 template 目录或 CLASSPATH 的 template 目录(包) 中依次加载特定的模板文件。
3. 比如我们使用一个 select 标签,且指定主题为 xhtml,则加载模板文件的顺序为 (1) Web 应用/template/xhmlt/select.flt (2) CLASSPATH/template/xhtml/select.ftl。Struts2 默认是用的 FreeMarkder 模板技术,可设置常量 struts.ui.templateSuffix 来改变默认的模板技术,可选值有 ftl、vm、jsp。但是对于 vm 和 jsp 要自己提供完整的实现,Struts2 可没帮你做这些。
4. 有时候我们想要自定义主题,如你希望输入框前的标签显示红颜色,你不想要校验错误提示在输入框正上方而是右边。当然你可以修改 struts2-core-2.x.x.jar 中 template 下某个主题的模板文件,或拷一份到 Web 应用目录的 template 目录修改要定制的模板,这样做总有些不爽。Struts2 还支持两种更灵活的主题定制方式。包装和继承现有主题,可以同时使用。
最简单的主题定制方式是利用主题模板的加载优先级,把自定义的模板文件放在优先级高的目录,比如放一个 text.ftl 在 WEB-INF/classes/template/xhtml/ 目录下,它将覆盖掉 struts2-core-2.x.x.jar 里的 template/xhtml/text.ftl 的定义。
5. 先看一个包装的例子,在 xhtml 下的 combobox.ftl 的内容如下:
<#include "/${parameters.templateDir}/${parameters.theme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/combobox.ftl" />
<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" /><#nt/>
它就是对 simple/combobox.ftl 的基础上包装上一个 controlheader.ftl 和一个 controlfooter.ftl,包装的局限性是你仍然是要为每一个 UI 组件提供单独模板文件,即全套的。
和设计模式中的包装(装饰)模式如出一辙,如 BufferedInputStream 包装了 InputStream,但在 BufferedInputStream 提供了全套的和 InputStream 一样的操作方法。
6. 再说继承来自定义主题,如果简单改变个别 UI 的风格,继承就是最为高效的了。此继承与 Java 的继承(即extends) 也是一马事。要改变或要新加的用自己定义的,其他的延用父主题的。举个例子,自定义一个名为 custom 的主题继承自 xhtml,只改变 select 标签的风格,你要做的就是编辑自己的一个 select.ftl 放在 WEB-INF/classes/template/custom 下,并在此目录下放一文件 theme.properties,内容是:
#指定该主题以 xhtml 为基础进行扩展
parent=xhml
使用可指定给 UI 标签,例如 <s:form name="aa" theme="custom" ...,效果就会是 form 下的 select 使用了在 custom 目录下自定义的 select.ftl,其他的直接使用父主题 xhtml 中的模板文件。Struts2 提供的 ajax 主题就是继承自 xhtml 主题的。
7. 简单说一下 Struts2 的内建主题,包括 simple、xhtml、css_xhtml 和 ajax。simple 主题不用多说,比Struts1 的 html 标签还弱些,只对应简单的 html 元素,不生成额外内容。xhtml 是默认主题,是对 simple 主题的包装和扩展(也就是继承),该主题下有一个 head.ftl 用来导入 javascript 类库(如 dojo)。xhtml 在 simple 的基础上增加了以下特性:
1) 针对 HTML 标签(如 textfield和select标签) 使用标准的两列表格布局
2) 每个 HTML 标签有 label 属性,默认左边显示,可通过 labelposition 属性设定位置
3) 自动输出后台校验错误或 javascript 前端校验错误
8. 继续 Struts2 的内建主题的话题。css_xhtml 主题是对 xhtml 的扩展,显示是加入了 css 样式控制特性。ajax 主题是对 xhtml 主题的扩展,在 xhtml 主题的每个标签增加了 ajax 的支持(以 Djoj 和 DWR 为基础)。所增 Ajax 特性有:
1) Ajax 方式的客户端校验
2) 远程表单的异步提交
3) 高级 div 标签,允许局部更新
4) 高级 a 标签,允许动态加载并执行远端的 javascript 代码。
5) 提供支持 ajax 的 tabbedPanel
6) 提供“富客户端” 模型的 pub-sub 事件模型
9. 先前有网友问过我,他用了 Struts2 的校验,但是错误输出是在输入框的上方,但希望错误信息是显示在输入框的右方,该如何做。当时我只告诉了他要修改模板文件,也只是大概告诉了他是在某个 template 目录下的一个 ftl 文件,因那时具体操作自己也不太清楚。现在知道了线索,但实际修改还是很麻烦的。
输入框 <s:textfield .../> 默认是用的 xhtml/text.flt 模板,text.ftl 包装了 smple/text.ftl,错误信息可以追溯发现是在 controlheader-core.ftl 中定义显示的,所以你可以把 xthml/text.ftl 和 controlheader-core.ftl 拷到 WEB-INF/classes/template/xhtml 目录中进行修改,WEB-INF/classes/template/xhtml 中的模板文件是优先于 struts2-core-2.x.x.jar 里的 template/xhtml 目录中的模板文件加载。
10. 看有些地方只笼统介绍说:所有表单元素都存在一个特殊的属性:form,这个属性引用元素所在表单,通过该属性实现表单元素与表单间的交互,例如可通过 ${parameters.form.id} 访问表单的 ID。对这句话我只是感到一头雾水,查看像 <s:textfield .../> 等标签并无 form 属性,用 <s:textfield value="${parameters.form.id}" name="aa"/> 也看不到输出所在表单的 ID。去网上找找,才知道前面那句话有出入,其实说的是在主题模板文件里的用法,打开一些主题模板文件,如 combobox.ftl 或 controlheader-core.ftl 文件,你就能看到许多的 parameters 的表示法-- parameters.required、parameters.id。想见一下 parameters 属性才是根本,它代表了表单元素的属性集,parameters 说来还有点像 this,this.id、this.form.id、this.required 等等...
发表评论
-
Struts2对Action名称的搜索顺序
2011-08-03 22:47 1383新建一个struts2项目,命名为struts2。按照如下XM ... -
探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
2011-08-03 19:09 1772一、概述 Struts2的核心是一个Filter ... -
struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的区别
2011-08-03 18:02 1346FilterDispatcher是struts2.0.x到2. ... -
框架学习之Struts2 第二节 Action的详解
2011-08-03 17:50 1376http://www.cnblogs.com/ying ... -
Struts2的模板和主题theme及自定义theme
2011-08-03 16:59 8267Struts2提供了三种主题,ajax, simple, cs ... -
struts2 action基类 ActionSupport
2011-08-03 16:14 2637Struts 2的Action无须实现 ... -
Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware)
2011-08-03 14:50 9703在Struts2中,动作类虽然继承ActionSupport类 ... -
Struts2自定义拦截器实例—Session超时的处理
2011-08-03 10:49 3400版本:struts2.1.6 实例功能:当用户登陆后,ses ... -
Struts2数据传输的背后机制:ValueStack(值栈)
2011-07-11 15:34 1344今天看到一篇讲struts2的valuestack的很好文章, ... -
struts2文件上传的采用的三种方式解析
2011-07-06 18:29 1372文件上传几乎是每个项目实现的一个必须的模块。 上传就是将 ... -
Struts2 <s:token/>标签
2011-03-01 09:24 16131、使用Struts2的表单标签,其中需要增加token标签。 ... -
struts2的Action配置通配符
2011-02-28 17:05 22241.注意,书写代码的时候一定要注意命名的规则,不要胡乱的命名, ... -
Struts2的类型转换器
2011-02-24 17:27 1393一、概述 在B/S应用中,将字符串请求参数转换为相应的 ... -
Struts2标签--s:url
2011-02-23 17:09 1884<!--action就是struts2 acti ... -
hgdfghgdfh
2011-01-06 17:57 0datealocaltonight.com -
Struts2 默认的模板配置 theme
2010-10-29 10:26 1474在使用struts2标签时,默认情况下生成的html代码会添加 ... -
Struts2自定义Theme
2010-10-29 10:21 15951. Struts2 Theme与WebWork Theme ... -
Struts2 的四种theme类型
2010-10-29 10:13 1678struts2 中有四种 theme 类型: simple ... -
struts2数据校验流程图
2010-10-29 09:40 2152通过我在blog中写到关于利用Struts 2完成手动校验这篇 ... -
详解struts2中struts.properties
2010-10-18 11:28 1221Struts 2框架有两个核心配置文件: strut ...
相关推荐
指定了Struts 2应用加载的用户自定义属性文件,自定义属性文件中的设置不会覆盖`struts.properties`文件中的配置。如果需要加载多个自定义属性文件,可以使用英文逗号`,`分隔文件名。 #### struts.mapper.class 该...
在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...
### Struts.xml中Constant属性参数配置详解 #### 概述 在Struts2框架中,`struts.xml` 文件扮演着至关重要的角色,它不仅负责配置应用的基本信息,还允许开发者通过一系列的常量(constant)来定制Struts2的行为。...
1. **Action类与Result**:Struts 2中的Action类替代了Struts 1的Form Bean,负责处理用户请求并返回结果。Result则定义了Action执行后的跳转逻辑,可以是页面、重定向或任何其他响应。 2. **拦截器(Interceptor)...
WebWork2是Struts2的前身,其思想和设计被融入到Struts2中,为开发者提供了丰富的功能和便捷的API。本参考文档主要关注的是Struts2中的标签(Tags)和它们的API,这对于构建动态、交互式的用户界面至关重要。 1. **...
在实际使用中,Struts2标签的灵活性和便利性体现在数据绑定上,它可以直接与Action类的属性进行交互,无需繁琐的EL表达式。例如,`<s:textfield name="username">`会自动找到对应的Action中的`username`属性,并将...
- 为了确保项目能正常运行Struts 2框架,我们需要将Struts 2的基本类库添加到项目中。这些库通常位于`struts2-blank-2.0.14.war`的`\WEB-INF\lib`目录下,共有五个`.jar`文件,包括但不限于`struts2-core.jar`等。 ...
在Struts2中,标签库是其强大功能的重要组成部分,它提供了丰富的UI标签来处理用户界面和业务逻辑的交互。本文将深入探讨Struts2中的标签,特别是与表单相关的标签,并通过实例来解释它们的使用方法。 首先,让我们...
在Struts2中,datetimepicker标签是用于创建日期和时间选择器的,极大地提升了用户体验。这个标签利用Dojo工具包,一个JavaScript库,来实现日期和时间的选择功能。 datetimepicker标签在页面上呈现为一个下拉容器...
本文将深入探讨Struts2中的标签及其使用实例。 一、Struts2标签库概述 Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它包含了一系列用于构建动态Web应用的标签。这些标签分为两类:核心标签和主题标签。核心...
- **标签库**:结合Struts2的标签库,如`s:form`、`s:textfield`等,使模板更加简洁。 - **模板继承**:通过`<#include>`或`<@import>`指令,实现模板的复用和继承。 - **宏定义**:使用`<#macro>`定义可重用的代码...
通过导入Struts 2的标签库`<%@ taglib uri="/struts-tags" prefix="s" %>`,可以使用`s:form`、`s:textfield`等标签方便地操作Action中的属性。 ### 对Struts 2方法的调用 1. **默认方法调用**:默认情况下,...
Struts2标签是Java Web开发框架Struts2中的一部分,用于简化JSP页面的编写,提高代码的可读性和可维护性。Struts2标签库是基于OGNL(Object-Graph Navigation Language)表达式语言,提供了丰富的UI组件和逻辑控制标签...
在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,用于简化视图层的开发,使代码更加简洁、易读。本文将深入探讨Struts2标签的写法及其应用。 首先,Struts2的标签库分为核心标签库和OGNL标签...
OGNL(Object-Graph Navigation Language)是Struts2中的默认表达式语言,用于在Action类和视图之间交换数据。这部分可能讲解了如何使用OGNL表达式来访问和修改对象属性,以及在JSP中展示数据。 6. **Struts2_3000...
12. **Theme和CSS**: Struts 2支持多种主题和样式表,如xhtml、simple、ajax等,通过`theme`属性可以改变标签的外观。同时,可以使用`cssClass`和`cssStyle`属性为标签添加自定义的CSS样式。 13. **Tiles标签**: ...
在Struts2中,主题和皮肤是实现界面样式和布局的重要机制,它们允许开发者轻松地改变应用的外观和感觉,以满足不同用户或场景的需求。本教程将深入讲解Struts2中的主题和皮肤功能,基于官方示例12进行解析。 首先,...
这些只是Struts 2 S标签库中的一部分,实际上还有许多其他标签,如`s:textfield`(文本字段)、`s:textarea`(文本区域)、`s:submit`(提交按钮)等等,它们极大地简化了MVC模式中的视图层开发。通过合理使用这些...
登录页面中使用了Struts 2提供的Ajax Tags来实现页面的异步更新。通过设置`<s:submit>`标签的`theme="ajax"`属性,使其具备Ajax特性。当用户点击登录按钮后,页面的`loginDiv`部分将通过Ajax方式更新,而无需整个...
在Struts2框架中,我们通常会在Action类中定义一些变量,然后在JSP页面中显示这些变量的值。Struts2提供了一个简单的标签 `<s:property>` 来帮助我们在JSP页面中获取并显示Action中的变量值。 **示例代码**: ```xml...