- 浏览: 207944 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
luoqiyi:
set ANT_OPTS=-Xms64m -Xmx512m - ...
ant编译时出现内存错误:java.lang.OutOfMemoryError。 -
廖乐逍遥:
怎么还是不行呀
Eclipse部署Maven创建的webapp到Tomcat -
byf157:
Garfield.Geng 写道上面的代码行太多了。应该用现成 ...
java md5 示例 -
Garfield.Geng:
上面的代码行太多了。应该用现成的。
/**
* Tes ...
java md5 示例 -
曾经、流泪过:
CRM
Struts2的模板和主题介绍
关键字: 模板 主题
因为Struts2所有的UI标签都是基于主题和模板的,主题和模板是Struts2所有UI标签的核心。模板是一个UI标签的外在表示形式,例如:当我们使用<s:select ... ... />标签时,Struts2就会根据对应select模板来生成一个有模板特色的下拉列表框。如果为所有的UI标签都提供了对应的模板,那么这系列的模板就形成了一个主题。
对于一个JSP页面里包含的UI标签而言,即可以直接设置该UI标签需要使用的模板,也可以设置该UI标签使用的主题。实际上对开发者而言,并不推荐直接设置模板属性,而是应该选择特定主题。设置主题的方法有以下几种:
- 通过设定特定UI标签上的theme属性来指定主题。
- 通过设定特定UI标签外围的Form标签的theme属性来指定主题。
- 通过取得page会话范围内以theme为名称的属性来确定主题。
- 通过取得request会话范围内以theme为名称的属性来确定主题。
- 通过取得session会话范围内以theme为名称的属性来确定主题。
- 通过取得application会话范围内以theme为名称的属性来确定主题。
- 通过取得名为struts.ui.theme的常量(默认值是xhtml)来确定主题,该常量可以在struts.properties文件或者struts.xml文件中确定。
上面介绍的几种指定UI标签主题的方式,它们的优先级也是按照上面的顺序来的。
Struts2的模板目录是通过struts.ui.templateDir常量来指定的,该常量的默认值是template,即意味着Struts2会从Web应用的template目录,CLASSPATH(包括Web应用的WEB-INF\classes路径和WEB-INF\lib路径)的template目录来依次加载特定模板文件。如果我们只使用一个select标签,且指定主题为xhtml,则加载模板文件的顺序为:
- 搜索Web应用里/template/xhtml/select.ftl文件
- 搜索CLASSPATH路径下的template/xhtml/select.ftl文件
Struts2的模板文件是.ftl文件,它是FreeMarker的模板文件。用户也可以通过修改struts.ui.templateSuffix常量的值来改变Struts2默认的模板技术,该常量接受如下几个值:
- ftl:基于FreeMarker的模板技术
- vm:基于Velocity的模板技术
- jsp:基于JSP的模板技术
虽然Struts2允许使用自己的模板技术,但如果用户选择了使用Velicoty或JSP作为模板技术,就要实现所有的模板和主题,这个是工作量很大的事情。
Struts2默认提供了4个主题:simple,xhtml,css_xhtml和ajax,这4个主题的模板文件放在Struts2的核心类库里(struts2-core.jar包)。
用户也可以创建自己的主题
创建自定义的主题有如下3种方式:
- 开发者完全实现一个全新的主题,这种方式要求开发者为每个UI标签都提供自定义的模板文件,不推荐
- 包装一个现有的主题,这种方式要求开发者为每个UI组件都提供自定义主题的模板文件,即使自定义主题里某个UI组件与原来主题里UI组件的行为完全一样。也不推荐。
- 扩展一个现有的主题,这种方式开发者只需要提供自定义的模板文件
例子如下:
用户自定义的主题是以xhtml主题为基础的,并且只想改变select UI标签的行为,则可以提供一个自己的select.ftl文件,并将该文件放在对应的主题目录下。
select.ftl文件代码如下:
- <!-- 加入自己的文字部分 -->
- <h3>作者李:</h3>
- <!-- 包含xhtml主题下的controlheader.ftl模板 -->
- <#include "/${parameters.templateDir}/xhtml/controlheader.ftl" />
- <!-- 包含simple主题下的select.ftl模板 -->
- <#include "/${parameters.templateDir}/simple/select.ftl" />
- <!-- 包含xhtml主题下的controlfooter.ftl模板 -->
- <#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />
- 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/memory_xj/archive/2008/11/27/3390591.aspx
<!-- 加入自己的文字部分 --> <h3>作者李:</h3> <!-- 包含xhtml主题下的controlheader.ftl模板 --> <#include "/${parameters.templateDir}/xhtml/controlheader.ftl" /> <!-- 包含simple主题下的select.ftl模板 --> <#include "/${parameters.templateDir}/simple/select.ftl" /> <!-- 包含xhtml主题下的controlfooter.ftl模板 --> <#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" /> 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/memory_xj/archive/2008/11/27/3390591.aspx
将该文件放在Web应用的WEB-INF\classes\template\lee路径下,这表明创建了一个自定义模板,该模板名为lee。
除此之外,还必须在主题目录下增加一个theme.properties文件,该文件指定自定义模板是以哪个模板为基础进行扩展的,文件内容为:
parent=xhtml #指定该主题以xhtml主题为基础进行扩展
该文件也放在WEB-INF\classes\template\lee路径下,然后在JSP页面中使用如下代码就可调用此模板了:
- <%--
- * @author yeeku.H.lee kongyeeku@163.com
- * @version 1.0
- * <br>Copyright (C), 2005-2008, yeeku.H.Lee
- * <br>This program is protected by copyright laws.
- * <br>Program Name:
- * <br>Date:
- --%>
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用自定义模板来生成下拉列表</title>
- </head>
- <body>
- <s:select name="aa" theme="lee"
- list="{'Spring2.0' , 'J2EE' , 'Ajax'}" size="3"/>
- </body>
- </html>
<%-- * @author yeeku.H.lee kongyeeku@163.com * @version 1.0 * <br>Copyright (C), 2005-2008, yeeku.H.Lee * <br>This program is protected by copyright laws. * <br>Program Name: * <br>Date: --%> <%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用自定义模板来生成下拉列表</title> </head> <body> <s:select name="aa" theme="lee" list="{'Spring2.0' , 'J2EE' , 'Ajax'}" size="3"/> </body> </html>
Struts2提供的ajax主题就是以xhtml主题为基础进行扩展的。
Struts2的内建主题
Struts2内建了4个主题,分别是simple,xhtml, css_xhtml和ajax。
simple主题是最简单的主题,它是最底层的结构,主要用于构建附加的功能或者行为(例如在此主题基础上进行扩展),使用simple主题时,每个UI标签只生成一个简单的HTML元素,不会生成其他额外的内容。
Struts2的xhtml, css_xhtml主题都是对simple主题的包装和扩展。
xhtml主题是Struts2的默认主题,它对simple主题进行扩展,在该主题的基础上增加了如下附加的特性:
1,针对HTML标签(如textfield和select标签)使用标准的两列表格布局。
2,每个HTML标签的Label,即可以出现在HTML元素的左边,也可以出现在上边,这取决于labelposition属性的设置。
3,自动输出校验错误信息。
4,输出JavaScript的客户端校验。
css_xhtml主题则对原有的xhtml主题进行了扩展,在xhtml主题基础上加入了CSS样式控制。
ajax主题目对xhtml主题目进行了扩展,在xhtml主题上为每个标签提供了额外的Ajax支持。ajax主题的Ajax支持是以Dojo和DWR为基础的。ajax主题在xhtml主题基础上增加了如下特性:
1,支持Ajax方式的客户端校验。
2,支持远程表单的异步提交(最好和submit标签一起使用)。
3,提供高级的div标签,允许实现局部更新部分HTML的功能。
4,提供高级的a标签,允许动态加载并执行远端的javaScript代码。
5,提供支持ajax的tabbedPanel。
6,提供"富客户端"模型的pub-sub事件模型。
5,Struts2的表单标签
所有的表单标签可以分为两种:form标签本身和单个表单元素的标签。Struts2的表单元素标签都包含了非常多的属性。但有很多属性完全是通用的。
表单标签的通用属性
所有表单标签处理类都继承了UIBean类,UIBean包含了一些通用属性,这些通用属性分成3种:
1,模板相关属性;2,javascript相关属性;3,通用属性。
除了这些属性之外,所有的表单元素标签都存在一个特殊的属性:form,这个属性引用表单元素所在的表单,通过该form属性,可以实现表单元素和表单之间的交互。例如,我们可以通过${parameters.form.id}来取得表单元素所在表单的ID。表单标签的通用属性有以下几类:
1,模板相关的通用属性:可以指定该表单标签所用的模板和主题。
2,javascript相关的通用属性:指定在鼠标在该标签上操作时的javascript函数。
3,设置表单元素的提示:当鼠标在这引动元素上时,系统将出现提示。Struts2将这种特性称为Tooltip。
4,设置表单元素的CSS样式。
表单标签的name和value属性
name属性会映射到Action中的属性名称,value属性则代表此属性的值。例子如下:
<!-- 将下面文本框的值绑定到Action的person属性的firstName属性 -->
<s:textfield name="person.firstName" />
<!-- 使用表达式生成表单元素的值 -->
<s:textfield name="person.firstName" value="${person.firstName}" />
实际上Struts2已经自动处理了属性内容的赋值工作,因此我们只需要使用第一种方式就可以了。
checkboxlist标签
checkboxlist标签可以一次创建多个复选框,用于一次生成多个HTML标签中的<input type="checkbox">,它根据list属性指定的集合来生成多个复选框。因此使用该标签要指定一个list属性。其它都是通过属性,但是有两个常用属性:
1,listKey:该属性指定集合元素中的某个属性作为复选框的key
2,listValue:该属性指定集合元素中的某个属性作为复选框的value
下面是一个JSP页面的例子:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:checkboxlist生成多个复选框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用s:checkboxlist生成多个复选框</h3>
- <s:form>
- <!-- 使用简单集合来生成多个复选框 -->
- <s:checkboxlist name="a" label="请选择您喜欢的图书" labelposition="top"list="{'Spring2.0' , 'J2EE' , 'Ajax'}"/>
- <!-- 使用简单Map对象来生成多个复选框 -->
- <s:checkboxlist name="b" label="请选择您想选择出版日期" labelposition="top"list="#{'Spring2.0':'2006年10月' , 'J2EE':'2007月4月' , 'Ajax':'2007年6月'}" listKey="key" listValue="value"/>
- <s:bean name="lee.BookService" id="bs"/>
- <!-- 使用集合里放多个JavaBean实例来生成多个复选框 -->
- <s:checkboxlist name="b" label="请选择您喜欢的图书" labelposition="top" list="#bs.books" listKey="name" listValue="author"/>
- </s:form>
- </body>
- </html>
- JavaBean和JavaBean的访问类代码如下:
- package lee;
- public class Book
- {
- private String name;
- private String author;
- public Book()
- {
- }
- public Book(String name , String author)
- {
- this.name = name;
- this.author = author;
- }
- public void setName(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return this.name;
- }
- public void setAuthor(String author)
- {
- this.author = author;
- }
- public String getAuthor()
- {
- return this.author;
- }
- }
- package lee;
- public class BookService
- {
- public Book[] getBooks()
- {
- return new Book[]
- {
- new Book("Spring2.0","李"),
- new Book("J2EE","李"),
- new Book("Ajax","李")
- };
- }
- }
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:checkboxlist生成多个复选框</title> <s:head/> </head> <body> <h3>使用s:checkboxlist生成多个复选框</h3> <s:form> <!-- 使用简单集合来生成多个复选框 --> <s:checkboxlist name="a" label="请选择您喜欢的图书" labelposition="top"list="{'Spring2.0' , 'J2EE' , 'Ajax'}"/> <!-- 使用简单Map对象来生成多个复选框 --> <s:checkboxlist name="b" label="请选择您想选择出版日期" labelposition="top"list="#{'Spring2.0':'2006年10月' , 'J2EE':'2007月4月' , 'Ajax':'2007年6月'}" listKey="key" listValue="value"/> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来生成多个复选框 --> <s:checkboxlist name="b" label="请选择您喜欢的图书" labelposition="top" list="#bs.books" listKey="name" listValue="author"/> </s:form> </body> </html> JavaBean和JavaBean的访问类代码如下: package lee; public class Book { private String name; private String author; public Book() { } public Book(String name , String author) { this.name = name; this.author = author; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setAuthor(String author) { this.author = author; } public String getAuthor() { return this.author; } } package lee; public class BookService { public Book[] getBooks() { return new Book[] { new Book("Spring2.0","李"), new Book("J2EE","李"), new Book("Ajax","李") }; } }
combobox标签
combobox标签生成一个单行文本框和下拉列表框的结合,但两个表单元素只对应一个请求参数,只有单行文本框里的值才包含请求参数,而下拉列表框则只是用于辅助输入,并没有name属性,也就不会产生请求参数。使用该标签时,需要指定一个list属性,该list属性指定的集合将用于生成列表框。例子如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:combobox生成下拉输入框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用s:combobox生成下拉输入框</h3>
- <s:form>
- <s:combobox label="请选择您喜欢的图书" theme="css_xhtml" labelposition="top"
- list="{'Spring2.0' , 'J2EE' , 'Ajax'}"
- size="20" maxlength="20" name="book"/>
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:combobox生成下拉输入框</title> <s:head/> </head> <body> <h3>使用s:combobox生成下拉输入框</h3> <s:form> <s:combobox label="请选择您喜欢的图书" theme="css_xhtml" labelposition="top" list="{'Spring2.0' , 'J2EE' , 'Ajax'}" size="20" maxlength="20" name="book"/> </s:form> </body> </html>
通过访问上面的JSP页面,我们可以看到上面的文本框,用户可以自行输入,可也以选择下面的checkbox中的内容来进行输入。需要注意的是,此时的下拉列表仅仅是用于辅助输入的,并没有任何实际意义,因此不能指定它的listKey和listValue属性。
datetimepicker标签
datetimepicker标签生成一个日期,时间下拉选择框,当我们使用该日期,时间选择框选择某个日期,时间时,系统会自动将选中的日期,时间输入指定的文本框。系统将指定日期,时间输入指定文本框时,必须转换成日期,时间字符串,为了设置该字符串的格式,必须使用日期,时间的格式符。datetimepicker使用例子如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:datetimepicker生成日期选择框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用使用s:datetimepicker生成日期选择框</h3>
- <s:form theme="simple">
- 日期选择部件,指定toggleType属性,且指定value="today"<br>
- <s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><hr>
- 日期选择部件,指定了format属性<br>
- <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日"/><hr>
- 日期选择部件,指定了weekStartsOn属性<br>
- <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日" weekStartsOn="2"/><hr>
- 时间选择部件<br>
- <s:datetimepicker label="选择出发时间'" name="start" type="time" value="13:00"/><hr>
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:datetimepicker生成日期选择框</title> <s:head/> </head> <body> <h3>使用使用s:datetimepicker生成日期选择框</h3> <s:form theme="simple"> 日期选择部件,指定toggleType属性,且指定value="today"<br> <s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><hr> 日期选择部件,指定了format属性<br> <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日"/><hr> 日期选择部件,指定了weekStartsOn属性<br> <s:datetimepicker name="order.date" label="购买日期" displayFormat="dddd年MM月dd日" weekStartsOn="2"/><hr> 时间选择部件<br> <s:datetimepicker label="选择出发时间'" name="start" type="time" value="13:00"/><hr> </s:form> </body> </html>
doubleselect标签
doubleselect标签会生成一个级联列表框(两个下拉列表框),当选择第一个下拉列表框时,第二个下拉列表框中的内容会随之改变。使用例子如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:doubleselect生成级联下拉列表框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用s:doubleselect生成级联下拉列表框</h3>
- <s:form action="x">
- <s:doubleselect
- label="请选择您喜欢的图书"
- name="author" list="{'李', 'David'}"
- doubleList="top == '李' ? {'Spring2.0', 'J2EE' , 'Ajax'} : {'JavaScript: The Definitive Guide'}"
- doubleName="book"/>
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:doubleselect生成级联下拉列表框</title> <s:head/> </head> <body> <h3>使用s:doubleselect生成级联下拉列表框</h3> <s:form action="x"> <s:doubleselect label="请选择您喜欢的图书" name="author" list="{'李', 'David'}" doubleList="top == '李' ? {'Spring2.0', 'J2EE' , 'Ajax'} : {'JavaScript: The Definitive Guide'}" doubleName="book"/> </s:form> </body> </html>
默认情况下,第一个下拉列表框只支持两项,如果超过两项则不能这样处理。
我们可以先定义一个Map对象,该Map对象的value都是集合,这样就能以Map对象的多个key创建一个下拉列表框的列表项,而每个key对应的集合则用于创建第二个下拉列表框的列表项。例子如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:doubleselect生成级联下拉列表框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用s:doubleselect生成级联下拉列表框</h3>
- <s:set name="bs"
- value="#{'李': {'Spring2.0', 'J2EE','Ajax'},
- 'David': {'JavaScript: The Definitive Guide'},
- 'Johnson': {'Expert One-on-One J2EE Design and Development'}}" />
- <s:form action="x">
- <s:doubleselect
- label="请选择您喜欢的图书"
- size="3"
- name="author" list="#bs.keySet()"
- doubleList="#bs[top]"
- doubleSize="3"
- doubleName="book"/>
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:doubleselect生成级联下拉列表框</title> <s:head/> </head> <body> <h3>使用s:doubleselect生成级联下拉列表框</h3> <s:set name="bs" value="#{'李': {'Spring2.0', 'J2EE','Ajax'}, 'David': {'JavaScript: The Definitive Guide'}, 'Johnson': {'Expert One-on-One J2EE Design and Development'}}" /> <s:form action="x"> <s:doubleselect label="请选择您喜欢的图书" size="3" name="author" list="#bs.keySet()" doubleList="#bs[top]" doubleSize="3" doubleName="book"/> </s:form> </body> </html>
从访问看到的效果来看,结果并不理想。还可以直接用javascript代码来实现以上效果,这里就不给出代码了。自己去思考一下。
head标签
head标签主要用于成生HTML主要页面的HEAD部分。国为有些主题需要包含特定的CSS和javascript代码,而该标签则用于生成对这此CSS和javaScript代码的引用。
例如,如果需要在页面中使用ajax组件,则使用一个带theme="ajax"属性的head标签,就可以将标准Ajax的头信息包含在页面中。
使用Ajax主题时,可以通过设置head标签的debug参数为true,从而打开调试标志。
一般使用Struts2的UI标签,javascript客户端校验等需要javascript库和CSS支持功能时,都应该先使用head标签。这个标签没有其它特别的用法,前面也已经使用过了。不再写例子。
optiontransferselect标签
optiontransferselect标签会创建两个选项用来转移下拉列表项,该标签会生成两个<select>标签,并且会生成系列的按钮,这系列的按钮可以控制选项在两个下拉列表之间移动,升降,当提交该表单时,两个<select>标签的请求参数都会被提交。例子代码如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:optiontransferselect来生成可移动列表项的下拉列表框</title>
- <s:head/>
- </head>
- <body>
- <h3>使用s:optiontransferselect来生成可移动列表项的下拉列表框</h3>
- <s:form>
- <!-- 使用简单集合对象来生成可移动的下拉列表框 -->
- <s:optiontransferselect
- label="请选择你喜欢的图书"
- name="cnbook"
- leftTitle="中文图书:"
- rightTitle="外文图书"
- list="{'Spring2.0','J2EE','Ajax'}"
- multiple="true"
- addToLeftLabel="向左移动"
- selectAllLabel="全部选择"
- addAllToRightLabel="全部右移"
- headerKey="cnKey"
- headerValue="--- 选择中文图书 ---"
- emptyOption="true"
- doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: The Definitive Guide'}"
- doubleName="enBook"
- doubleHeaderKey="enKey"
- doubleHeaderValue="--- 选择外文图书 ---"
- doubleEmptyOption="true"
- doubleMultiple="true"
- />
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>使用s:optiontransferselect来生成可移动列表项的下拉列表框</title> <s:head/> </head> <body> <h3>使用s:optiontransferselect来生成可移动列表项的下拉列表框</h3> <s:form> <!-- 使用简单集合对象来生成可移动的下拉列表框 --> <s:optiontransferselect label="请选择你喜欢的图书" name="cnbook" leftTitle="中文图书:" rightTitle="外文图书" list="{'Spring2.0','J2EE','Ajax'}" multiple="true" addToLeftLabel="向左移动" selectAllLabel="全部选择" addAllToRightLabel="全部右移" headerKey="cnKey" headerValue="--- 选择中文图书 ---" emptyOption="true" doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: The Definitive Guide'}" doubleName="enBook" doubleHeaderKey="enKey" doubleHeaderValue="--- 选择外文图书 ---" doubleEmptyOption="true" doubleMultiple="true" /> </s:form> </body> </html>
select标签
select标签用于生成一个下拉列表框,通过为该元素指定list属性,系统会使用list属性指定的集合来生成下拉列表框的选项。这个list属性指定的集合,即可以是普通集合,也可以是Map对象,还可以是集合中的对象的实例。例子如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <<title>使用s:select生成下拉选择框</title>
- <<s:head/>
- </head>
- <body>
- <<h3>使用s:select生成下拉选择框</h3>
- <s:form>
- <<!-- 使用简单集合来生成下拉选择框 -->
- <s:select name="a" label="请选择您喜欢的图书" labelposition="top" multiple="true"
- list="{'Spring2.0' , 'J2EE' , 'JavaScript: The Definitive Guide'}"/>
- <!-- 使用简单Map对象来生成下拉选择框 -->
- <s:select name="b" label="请选择您想选择出版日期" labelposition="top"
- list="#{'Spring2.0':'2006年10月' , 'J2EE':'2007月4月' , 'Ajax':'2007年6月'}"
- listKey="key"
- listValue="value"/>
- <s:bean name="lee.BookService" id="bs"/>
- <!-- 使用集合里放多个JavaBean实例来生成下拉选择框 -->
- <s:select name="b" label="请选择您喜欢的图书" labelposition="top" multiple="true"
- list="#bs.books"
- listKey="author"
- listValue="name"/>
- </s:form>
- </body>
- </html>
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <<title>使用s:select生成下拉选择框</title> <<s:head/> </head> <body> <<h3>使用s:select生成下拉选择框</h3> <s:form> <<!-- 使用简单集合来生成下拉选择框 --> <s:select name="a" label="请选择您喜欢的图书" labelposition="top" multiple="true" list="{'Spring2.0' , 'J2EE' , 'JavaScript: The Definitive Guide'}"/> <!-- 使用简单Map对象来生成下拉选择框 --> <s:select name="b" label="请选择您想选择出版日期" labelposition="top" list="#{'Spring2.0':'2006年10月' , 'J2EE':'2007月4月' , 'Ajax':'2007年6月'}" listKey="key" listValue="value"/> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来生成下拉选择框 --> <s:select name="b" label="请选择您喜欢的图书" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/> </s:form> </body> </html>
radio标签
radio标签的用法与checkboxlist的用法几乎完全相同,一样可以指定label, list, listKey, listValue等属性。例子代码如下:
- <%@ page contentType="text/html; charset=GBK" language="java"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
- <title>使用s:radio生成多个单选框</title>
- <s:head/>
发表评论
-
在浏览器中通过js向客户本机写文件示例
2012-09-12 17:01 996<script> var fs=new Activ ... -
MyEclipse卡死解决 总结
2012-08-16 20:14 1316MyEclipse卡死解决 在用[MyEclipse] 写 ... -
Internet Explorer无法打开站点,已终止操作 错误分析
2012-08-03 14:25 0在页面还没有ready的时候就调用了htmlObject的ap ... -
java 日期处理总结
2012-08-03 14:24 9801、通过MessageFormat转化 String dat ... -
apache 启动失败
2012-06-26 11:33 1799Apache启动报错: the requested opera ... -
实现onchange无法实现的功能:通过js监听属性变化事件
2012-06-05 16:13 1907<input type="text" ... -
解决火狐不支持Cursor:hand的方法
2012-02-22 14:39 887解决火狐不支持Cursor:hand的方法 firefox 下 ... -
Axis2服务器配置步骤
2012-02-08 17:08 1425Axis2服务器配置步骤 一、Axis2服务器目录结构如下: ... -
js 导出excels
2011-12-28 17:23 639<script> function method1 ... -
jsp 页面打印预览 收藏
2011-12-28 17:04 1238<%@ page language="java ... -
MyEclipse9.1 下安装Drools插件
2011-12-14 17:56 1320非常简单,记录如下: 在MyEclipse9.1下安装Droo ... -
Web应用缓存
2011-12-05 14:25 781利用memcached构建高性能的Web应用程序; JCS(J ... -
Http Post Xml方式传递数据
2011-09-15 11:01 2493Http Post Xml方式传递数据 一、概述 在不同的应 ... -
java中取得当月最后一天的四种方法 java Calendar 当月 第一天 最后一天
2011-06-30 15:12 1630java中取得当月最后一天 ... -
js性能优化调试
2011-05-16 17:58 783客户端动态输出table数据并展示表格,是web应用中较为常见 ... -
Tomcat性能调优方案
2011-04-10 11:48 744Tomcat性能调优方案 一、 ... -
tomcat 控制台乱码、标题栏修改
2011-04-10 11:33 153431、Tomcat控制台中文乱码解决办法 修改\tomca ... -
jdk 6 Derby 数据库
2011-03-26 22:08 1844Derby并不是一个新的数据库产品,它是由IBM捐献给 ... -
模态窗口 showModalDialog
2011-03-22 12:31 3010转自:http://www.cnblogs.com/don ... -
Maven常用命令
2011-03-03 22:03 562Maven常用命令 创建普通应用项目: mvn ...
相关推荐
在本“Struts2框架模板”中,我们将探讨Struts2的基础知识、核心组件、配置文件、拦截器以及如何快速搭建一个基本的Struts2项目。 1. **Struts2基础** - **MVC模式**:Struts2遵循MVC模式,使得业务逻辑、数据模型...
在压缩包`Struts2_2100_Theme_4`中,可能包含了Struts2的一个特定版本(2.1.0)的关于主题的相关资源,比如预定义主题的模板文件、CSS样式表和JavaScript文件。解压这个文件后,开发者可以研究这些文件,理解它们的...
5. **国际化与主题支持**:Tiles与Struts2集成良好,可以方便地支持多语言和主题切换,提升用户体验。 6. **扩展性**:Tiles是基于Servlet API的,因此它可以与其他Web框架(如Spring MVC)配合使用,也可以与各种...
Struts2支持多种结果类型,如dispatcher(默认,转发到JSP),redirect(重定向到URL),freemarker(使用FreeMarker模板引擎渲染)等。 **9. 国际化和主题** Struts2支持多语言环境,通过资源文件(如message....
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-...文档“struts2struts2实例和详细介绍.doc”应该会提供更详细的指导和示例代码,帮助你深入理解和运用Struts2框架。
在“Struts2中文教程”中,你可以找到关于这个框架的基础知识,包括安装配置、Action类、结果类型、拦截器等关键概念的详细介绍。教程通常会从最基础的环境搭建开始,教你如何配置Struts2的核心库和web.xml文件,...
Struts2是一个基于MVC(Model-View-Controller)架构模式的开源框架,用于构建动态、数据驱动的Web应用程序,而FreeMarker则是一个模板引擎,它允许开发者将业务逻辑与视图层分离,使得前端展示更加灵活和高效。...
如果不指定一个主题,然后Struts2中会使用默认的XHTML主题。例如Struts 2中选择标签: 生成HTML标记: <label for=empinfo_name class=label>Name: </td><td> <input type=text name=name value= id=...
文档还会详细介绍`Ognl(Object-Graph Navigation Language)`表达式语言的使用,它是Struts2中用于数据绑定和表示层表达的关键工具。 文档中的详细代码案例是实践学习的关键。例如,如何创建一个基本的动作类,使用...
Struts2是一个强大的Java web开发框架,用于构建和维护可扩展、具有良好结构的Web应用程序。这个"Struts2项目代码"提供了一个学习Struts2框架的实用实例,可以帮助开发者更好地理解Struts2的核心概念和实践应用。 ...
5. **主题和模板**:Struts2支持多种视图技术,如JSP、FreeMarker、Velocity等,提供丰富的主题和模板,便于定制用户界面。 6. **插件体系**:Struts2有丰富的插件库,如Struts2-dojo-plugin、Struts2-json-plugin...
从标签“netbean struts2 插件”我们可以进一步了解,这个主题集中在如何在NetBeans IDE中安装和利用Struts2插件进行开发。这通常包括以下几个步骤: 1. **安装插件**:首先,用户需要在NetBeans的插件管理器中搜索...
视图呈现可以通过FreeMarker、JSP或Velocity等模板技术实现,对应的包分别是`org.apache.struts2.views.freemarker`、`org.apache.struts2.views.jsp`和`org.apache.struts2.views.velocity`。 配置相关的类位于`...
此外,还可以使用Struts2的国际化和主题特性来实现多语言和不同样式表的支持。 总结来说,Struts2与Freemarker的配置主要是围绕工程的环境搭建、Struts2的web.xml配置、struts.xml配置以及Freemarker模板的编写展开...
2. **安装和搭建环境**:学习如何配置Struts 2框架,包括添加依赖库、创建web.xml和struts.xml文件。 3. **创建第一个Struts 2应用**:通过创建简单的Action类和配置文件,实现用户请求到响应的过程。 4. **Action...
最后,`org.apache.struts2.views`包支持不同类型的视图渲染,如FreeMarker、JSP和Velocity,这使得开发者可以选择适合的模板引擎来构建视图层。 综上所述,Struts2的工作流程大致如下:请求到达服务器后,...
Struts2 标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,Struts2 的主题、模板都提供了很好的扩展性。Struts2 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂、多变的需求。 Struts...
6. **Struts 2 - 6.swf** - 最后一部分可能讨论了更高级的主题,如Struts2与Spring的集成,国际化(i18n)支持,动态方法调用(Dynamic Method Invocation),以及如何调试和优化Struts2应用。 通过这六个部分的...