0hi猿团提供了移动跨平台开发视频,包括html5,apicloud appcan,dcloud,具体请看http://www.9y.cm
struts !
比如常用的如 HTML标签库
HTML标签库中的定制标签本质上与普通的HTML <form>标签和它相关联的输入标签,比如各种各样的<input>标签,之间具有一一对应关系。
这个标签库的目的是为了能够将视图层连接到Struts Web应用程序的控制器层。这两者之间的连接主要是在struts-config.xml文件中完成的。
HTML库中的标签根据功能可以分为4个组:
? 表单标签。这些标签将数据从视图传递到控制器。这些标签几乎与它们的HTML对应物(<form>标签以及各种各样的HTML数据输入标签)是一一对应的关系,但是也有额外的,Struts特有的、能够更好地使视图和控制器之间的数据传递更加容易的标签(例如,multibox标签)。
? 消息标签。这些标签(在视图层)显示源于控制器的消息。
? URL标签。这些标签是需要URL才能工作的普通HTML标签的对应物。Struts版本的这种标签的存在主要是为了允许使用全局转发的名称而不是实际的URL。
? 杂项标签。这些标签没有明确的功能分组,所以必须单独处理。
表C-1到表C-4根据其功能分组列出了这些标签的概要说明。
表C-1到表C-4中的信息基于那些标签的Apache文档。
Apache许可证的一份副本可以在www.apache.org/licenses/LICENSE-2.0处找到。
表C-1 HTML标签库的表单标签
标 签 用 法
form 定义一个表单
checkbox 产生一个复选框输入字段
file 产生一个文件选择输入字段
hidden 产生一个隐藏字段
multibox 产生多个复选框输入字段
radio 产生一个单选按钮输入字段
select和option、options或 optionsCollection select产生一个下拉列表。option元素嵌套在select中,并且为外围的select元素产生选项
text/password 产生一个文本/口令输入字段
textarea 产生一个HTML文本区域输入字段
image 产生一个input字段图像
button 产生一个按钮输入字段
cancel 产生一个取消按钮
submit 产生一个提交按钮
reset 产生一个复位按钮
表C-2 HTML标签库的消息标签标 签 用 法
errors 显示错误消息
messages 在错误消息和消息集之上进行迭代(参看<logic:iterate>条目对这些术语的描述)
表C-3 HTML标签库的URL标签
标 签 用 法
base 产生一个HTML <base>标签。这样将创建一个参考,从此开始,JSP中的所有相对路径都根据此来计算
img 产生一个HTML <img>标签
link 产生一个HTML超链接
rewrite 扩展一个给定的URI。这在为创建输入到Java脚本函数中的URL的时候很有用的
表C-4 HTML标签库的杂项标签
标 签 用 法
html 产生一个<html>标签。也包括来自用户会话的language属性
xhtml 告诉页面中的其他标签将自己呈现为符合XHTML 1.0的标签
frame 产生一个HTML框架(frame)
javascript 指示自动产生的JavaScript的位置。用于与Validator框架一起使用时,如第15章所述
C.1.1 公共属性集
有些属性对于多个HTML库中的标签都是通用的。这些标签可以很自然地分组成几个公共属性集,随后将描述。我们将给每个属性集一个缩写,这个缩写将用在后面对每个标签的描述中。
1. 事件处理器属性集
这个最大的属性集由那些相当于HTML事件处理器属性的属性组成。Struts版本的属性完全和HTML版本的属性相同。我们将其称为事件处理器属性,或者简称evt-attrs。在这个属性集中的属性列于表C-5中。这个属性集中的每个属性的值都是一个在特定的动作发生时需要调用的JavaScript函数(例如,鼠标单击、失去焦点等)。如果熟悉HTML,表C-5应该没什么问题。
表C-5 事件处理器属性集
属性名称 触发器
onblur 元素失去焦点
onchange 元素的值发生改变并且元素失去焦点
onclick 元素被单击
ondblclick 元素被双击
onfocus 元素获得焦点
onkeydown 当元素具有焦点时,键被按下
onkeypress 当元素具有焦点时,键被按下然后释放
onkeyup 当元素具有焦点时,键被释放
onmousedown 当指针在元素之上时,鼠标按钮被按下
onmousemove 鼠标指针被移动到元素之上
onmouseout 鼠标指针离开元素
onmouseover 鼠标指针进入元素
onmouseup 当指针在元素之上时,鼠标按钮被释放
2. 可访问性属性集
下一个属性集也与HTML有关,并且这些属性有助于提高可访问性。
表C-6列出了这些标签,我们将其称为可访问性属性集,或者简称acc-attrs。
表C-6 可访问性属性集
属性名称 用 法
accesskey 指定如果某个键被按下,将导致该元素获得焦点
alt 指定此元素的备用文本
altKey 指定备用正文的消息资源关键字
tabindex 指定此元素的 Tab键次序的一个正整数
title 指定此元素的建议的标题。在大多数图形浏览器中,建议标题将在鼠标指针越过元素的时候表现为一个工具提示
titleKey 指定建议标题的消息资源关键字
表C-6中的大多数属性只不过是它们的HTML对应物的镜像。其中的例外是altkey和titleKey,它们使用Struts的消息资源文件来生产实际属性(分别是alt和title)的一个本地化版本。
3. 呈现属性集
呈现属性集(ren-attrs)由那些指定对应于一个标签的底层HTML元素的最终呈现的属性组成。这些属性被列出在表C-7中。
表C-7 呈现属性集
属性名称 用 法
disabled 这个boolean属性禁止(disabled = " true ")输入元素。在大多数图形浏览器中,这将导致HTML元素变成灰色
style 指定该元素的CSS样式
styleClass 指定此元素的CSS样式表。styleClass相当于HTML class属性
styleId 指定被分配给此元素的HTML ID。也就是说,styleId相当于HTML id属性
4. Struts属性集
Struts属性集(struts-attrs)由那些通常专门用于Struts的属性组成。这些属性被列出在表C-8中。
表C-8 Struts属性集
属性名称 用 法
bundle 指定要使用的消息资源束。如果这个属性没有被指定,将使用默认的Application.properties文件。资源束是在Web应用中使用多个消息资源文件的方式。注意,当前对这个特征的支持是不充分的,使用它会导致维护复杂化。bundle属性将在<bean:message>条目中更详细地解释。这个属性是Struts 1.2.5之后新引入的
indexed 这个boolean属性只有在外围的标签被嵌套在<logic:iterate>标签的内部才是有效的。如果设置为true,呈现后的HTML标签的名称将被索引,例如,myProperty [12]。括号中的数字将根据包围的<logic:iterate>标签的每一个迭代增加
property 在表单被提交时将使用的请求参数或HTML POST元素的名称设置为指定的值(见下一个条目)
value 输入元素的值。这个值将被提交给控制器层,可以在请求参数中或者在HTML POST本身中
5. 错误样式属性集(Struts1.2.5+)
错误样式属性集(err-attrs)是从Struts 1.2.5以后新引入的。这些属性将使你能够在一个给定的输入元素发生验证错误的时候指定一个错误样式。表C-9描述了这些属性。
表C-9 错误样式属性集
属性名称 用 法
errorKey 将在其下保存错误消息的关键字。只有在同时也指定了关联的<html:errors>的name属性的时候才需要指定这个属性。这两者必须相同
errorStyle 有错误发生时该元素的CSS样式
errorStyleClass 有错误发生时该元素的CSS样式类的名称
errorStyleId 分配这个新的标识符到该元素,如果有一个错误消息针对它的话
C.1.2 HTML标签库的Struts-EL标签
HTML库中的全部标签都有“EL使能”的版本。
注意 EL使能的标签是指那些允许使用EL表达式的标签。参看第10章的例子。
C.1.3 base
这个标签允许方便地创建一个HTML <base>标签。
HTML <base>标签允许指定一个基础URL,并以此为准来推算JSP中的相对路径(例如,../../myscripts.js或者mypage.html)。这个URL是使用外围JSP页面的绝对路径来解析的,但是这并不是必要的情况。能够保证这样的唯一方式是使用<base> 标签,或者更方便地,使用<html:base>标签。
1. 使用限制
<base>和<html:base>都必须是HTML的<head>标签的子标签。
2. 属性
? server :指定基础URL。如果省略了server属性,Struts将复制外围JSP页面的路径。server属性将被呈现为<base>的href属性。
? target:如果应用中使用了框架,那么可以在定义该框架的页面中指定这个基础URL所适用的框架名称。
3. 示例
最简单的、并且最有用的例子是独自使用<html:base >标签:
这意味着base就是JSP页面本身。这将被呈现为:
同样地,如果想要固定当前Web应用程序中的框架的base,可以这样使用:
如果需要设置base来指向另一个服务器,可以使用server属性:
4. 对应物
Struts-Faces 标签库(见第20章)包含了<s:base>标签,它可接受target属性。但是, server属性则没有对应物。
使用<html:base/>标签的一个技巧是:
C.1.4 button
<html:button>表示一个HTML按钮。单独使用它,<html:button>什么都不会做。例如,它不会提交表单。必须使用一个(或者多个)事件处理属性(见evt-attrs)来激活一些JavaScript以便执行一些感兴趣的事情。
注意 尽管当前的Apache Struts联机文档说,按钮的值不会被作为一个URL参数发送。
如果想要显示一个由一个图形定义的按钮,那么应该使用<html:image>代替。
1. 使用限制
这个标签必须用在一个<html:form>标签之内。必须指定property属性。
2. 属性
前4个公共属性集(evt-attrs、acc-attrs、ren-attrs和struts-attrs)都是可以接受的。唯一必需的属性是property。如果其值没有被指定,并且如果没有在<html:button>的标签体中呈现文本,那么按钮文字将默认为“Click”。
3. 示例
这段代码将呈现为一个具有“Click”文本标注的HTML按钮,当其被单击时,将调用JavaScript函数changeMode():
在这段代码中,假想的JavaScript函数可能会测试src.name = = "button1"来决定哪个按钮被单击了。
下一个例子展示了3个按钮,它们都有文本“Click Me”。最后一个按钮使用一个<html:bean>来本地化它的文本:
4. 对应物
JSF的<h:commandButton>标签要更加强大些,并且允许使用action属性将一个按钮轻易地连接到服务器端的某个函数:
当然,如果要在Struts中使用这个标签,需要将它嵌入到Strut-Faces <s:form>标签内部。参看第20章关于<h:commandButton>和<s:form>的更多细节。
C.1.5 cancel
这个标签在一个表单上显示一个取消按钮。单击这个按钮将导致外围的表单被提交,但是简单验证会被绕过。然而,表单相关的Action的execute()函数则会被正常调用,以显示下一个页面。当然,这意味着Action子类必须具有专门的逻辑来决定取消按钮是否被单击了(参见本小节中的“示例”一小节)。
当表单数据被提交时,Cancel 按钮中的文本也会被作为请求URL中的一个参数被发送。
1. 使用限制
这个标签必须用在一个<html:form>标签之内。不能随意指定property属性,这样做将导致取消按钮不被Struts接受。
2. 属性
前4个公共属性集(evt-attrs、acc-attrs、ren-attrs和struts-attrs)都是可以接受的。然而,不要随便指定property属性。如果其值没有被指定,并且如果没有在<html:cancel>的标签体中呈现文本,那么按钮文字默认为“Cancel”。
3. 示例
下列3个例子展示了3个取消按钮,它们都有文本“Cancel Me”。最后一个取消按钮使用了一个<html:bean>来本地化它的文本:
为了能够检测到取消按钮是否被单击了,可以在Action的execute()中使用这段代码:
4. 对应物
JSF 的<h:commandButton id = " cancel " type = " SUBMIT " >允许仿真<html:cancel>按钮的功能。当然,为了和Struts一起使用这个标签,需要将它嵌入到Strut-Faces <s:form>标签中。更多关于<h:commandButton>和<s:form>的细节参见第20章。
C.1.6 checkbox
这个标签将呈现为表单内的一个复选框输入字段。参见<html:multibox>。
1. 使用限制
这个标签必须用在<html:form>标签之内。property属性是必需的。ActionForm上的对应属性必须是一个布尔类型的属性。
2. 属性
全部的公共属性集(evt-attrs、acc-attrs、ren-attrs、struts-attrs、init-attr和新的err-attrs)都是可接受的,并且都有其通常的意义。有4件重要的事情需要注意:
? ActionForm子类上的对应属性必须是一个布尔类型的属性。
? value属性指定如果复选框被选择将要传递给setXXX()的参数。所以,如果指定value = " true "(或yes),那么setXXX(true)将在复选框被选中的时候就会被调用。假定对value属性使用任何其他的设置,如果复选框被选中,则setXXX(false)会被调用。
? 复选框被呈现为选中状态只有在其值等于getXXX()返回值的时候才会发生。所以,如果value = " true "(或on或yes)并且getXXX()也返回true,那么复选框会被呈现为选中。同样地,如果value不是true(或on或yes)并且getXXX()返回false,那么复选框也会被呈现为选中。
? ActionForm子类上对应的setXXX()函数只有在复选框被选中的时候才会被调用。这意味着为了使应用能够探测到一个未选中的复选框,需要在ActionForm的reset()函数中调用setXXX()。reset()函数会在一个表单被显示(或者重新显示)之前被Struts自动调用,并且是在任何setXXX()函数被调用之前。
3. 示例
代码
将被呈现为两个复选框字段。对应的ActionForm可能是:
pregnant属性是很简单明了的:如果用户选择了相应的复选框,那么会被直接地翻译为pregnant属性。nonsmoker属性则不那么明显:被保存的基本属性实际上与nonsmoker是相反的。这仅仅是一个方便做法,但是,可以看出,它造成了混乱的代价。
一个备选的、较少混淆的方式是,JSP 表单和ActionForm子类的代码都这样编码:
注意,我们删除了value = "false"。ActionForm子类现在是:
4. 对应物
JSF的<h:selectBooleanCheckbox>是一个对应物。可以将其包围在Struts-Faces <s:form>元素中,以便Struts能够处理提交的值。
C.1.7 errors
这个标签显示一个或多个错误消息。如果没有发现匹配的错误消息,则什么都不会被显示。参见<html:messages>,它可在错误和普通消息之上进行循环。
1. 使用限制
无。
2. 属性
? property:用它来检索错误消息的关键字。注意,可能有不只一个错误信息保存在同一个属性之下。如果指定property,那么会显示全部的错误消息。这个技巧在调试的时候是非常有用的。
? locale/bundle:这些属性用于指定一个不同的场所对象或消息资源文件。Locale属性指定一个可以用来在当前会话中查找Locale对象的关键字。bundle属性将在<bean:message>条目中详细解释。可以使用这些属性来指定一个不同于当前用户场所的场所,或者一个不同于默认资源文件的消息资源文件。
? name:持有错误消息的对象的名称。如果希望使用Struts的默认错误报告机制,请不要指定这个属性 。
? prefix/suffix:它们都是被呈现在每个错误信息之前和之后的文本的关键字。例如可以在消息资源文件中设置 :
那么就可以这样使用这些属性:
错误信息将被显示为
? header/footer:这些属性类似于prefix/suffix,但是它们适用于一列错误消息的开始和结束。这在有不只一个消息要被显示的时候才会发生。
3. 示例
通常,可以放置一个<html:errors>到一个输入元素附近,来显示该输入元素的相关错误消息。如下所示:
4. 对应物
Struts-Faces集成库中的<s:errors>标签是一个对应物。
C.1.8 file
这个标签可以允许容易地进行文件上传。
注意 第11章包含了对此标签的更完整的说明。
1. 使用限制
property属性是必需的。它必须是<html:form>标签的一个子标签。
2. 属性
全部的公共属性集(evt-attrs、acc-attrs、ren-attrs、struts-attrs、init-attr和新的err-attrs)都是可接受的,并且都有其通常的意义。
除此之外,还有几个专门针对file的属性:
? accept:可接受的文件扩展名的一个用逗号分隔的列表。这些是被浏览器显示的。不幸的是,大多数浏览器都会忽略这个信息。
? size:显示字段的长度。如果省略,决定权便留给浏览器。
? maxlength:可接受的最大字符数。默认允许无限的字符数。大多数浏览器忽略这个属性。
3. 示例
请参阅第11章。
4. 对应物
没有纯JSF的对应物。但是MyFaces支持一个名为<x:inputFileUpload>的扩充,它巧妙地进行了一些改进。用于访问上载文件的机制非常类似于Struts的FormFile(它调用UploadedFile)。然而,这带来了一些麻烦,因为当前的Struts-Faces集成库(1.0)不能用于MyFaces。
C.1.9 form
表示一个HTML表单。它也是许多输入标签的强制的父元素。
1. 使用限制
Action属性是必需的。
2. 属性
除了ren-attrs属性之外,form还接受下列属性:
? action:处理这个表单内的数据的表单处理器的名称。这个属性是必需的。
? method:这个form的HTTP提交方式,POST或GET,默认是POST。
? focus/focusIndex:focus指定在表单被第一次加载的时候,取得焦点的表单中的那一个字段的名称。Struts会自动产生JavaScript来处理这个事情。如果focus属性没有被指定,那么不会产生这样的JavaScript。focusIndex应用于被索引的输入元素。可以指定获得焦点的元素的索引。
? enctype:指定当提交这个表单的数据的时候所使用的编码。只有在表单中有一个<html:file>输入元素的时候才需要设置这个属性(详细信息参见对应的条目,或者参看第11章)。
? onsubmit/onreset:这些属性引用的是当这个表单被提交或者复位的时候,被调用的JavaScript 事件处理器的名称。
? acceptcharset:对此表单有效的字符编码(从Struts 1.2.7开始)。这是一个标准的HTML属性。
? readonly:如果被设置为true,意味着表单数据不能被编辑。
? scriptlanguage:如果被设置为false,将忽略产生的<script>标签中的language属性。如果指定了XHTML呈现,这个属性也将被忽略。
? target:这个表单的数据被提交到的窗口的名称。这个是一个标准的HTML属性。
3. 示例
通常,可以指定action和focus属性:
4. 对应物
Struts-Faces <s:form>是<html:form>最好的替代。细节参见第20章。
C.1.10 frame
呈现为一个HTML <frame>。使用<html:frame>的好处在于可以使用全局转发或表单处理器来轻易地将内容放入frame中。
1. 使用限制
必须指定action/ module、href、page或者forward属性。
2. 属性
? action/module、href、page或forward:用于为frame指定一个URL。action/module属性对指定一个表单处理器。当然,action必须以一个“/”开始,并且如果想要指定一个模块,可以使用module属性。href可以是一个相对的或者绝对的URL。page是一个相对于module的URL(因此必须以一个“/”开始)。forward是一个全局转发的名称。
? anchor:一个作为链接的可选的HTML锚。
? paramname、paramproperty、paramscope和paramid:使用这些属性来创建一个请求参数。请求参数是附加到最后的URL之上的。第一个属性用于在当前请求或会话中定位一个对象。这个对象的toString()就是一个参数值。参数名称由paramId给出。参看<html:link>中的一个例子。
? name/property/scope:使用这些属性来创建多个参数。请求参数是附加到最后的URL中的。这些属性用于定位一个类型为java.util.Map的对象。Map的关键字是参数名,并且对应的值就是参数值。如果指定property属性,必须也指定name属性。参见<html:link>中的一个例子。
? transaction:如果为true,则附加当前的事务令牌到URL中作为一个请求参数。参看<logic:present>条目获得关于事务令牌的详细信息。
? title/titleKey:这些属性的细节参见acc-attrs属性集。
? style/styleClass/styleId:这些属性的细节参见ren-attrs属性集。
? scrolling:指定如果必要时是否自动创建卷动条(scrolling = " auto "),或总是(yes)或从不(no)。
? marginheight/marginwidth:指定顶端和底部边距的高度(marginheight)或左边和右边边距(marginwidth)。单位是像素。
? frameborder:指定需要呈现一个边线(frameborder="1")或不需要(frameborder="0")。
? framename:呈现为的<frame>的名称。
? noresize:一个逻辑属性,指示这些frame是否可以缩放(false)或是否它的大小是固定的(true)。
? longdesc:frame的更长的描述URL。这个属性是一个标准的HTML属性,详细细节可参考HTML参考。
? bundle:允许选择一个不同于默认值的资源文件。bundle属性在<bean:message>条目中还会详细解释。
3. 示例
下面是一个具有两个frame的页面:
4. 对应物
无。
C.1.11 hidden
这个标签表示一个隐藏表单字段。
1. 使用限制
property属性是必需的。它必须是<html:form>标签的一个子标签。
2. 属性
前5个公共属性集(evt-attrs、acc-attrs、ren-attrs、struts-attrs和initattr)都是可接受的,并且都有其通常的意义。
除此之外,还有个write属性,如果被设置为true,将导致这个隐藏字段的值会被显示。这在调试时是有用的。
3. 示例
代码
指定一个隐藏字段,持有当前的表单bean上的名为clientId的属性的值。还可以这样指定一个value属性:
读取表单数据的Action子类就可以根据隐藏字段的值来进行分派。请看<bean:define>条目获取另一个有用的例子。
4. 对应物
JSF的<h:inputHidden>是<html:hidden>的一个对应物,但是需要将它包围在Struts Faces <s:form>标签之内,以便关联的表单bean能够被提交的值填充。
C.1.12 html
这个标签插入<html>…</html>标签,并且language属性等于当前的用户的场所。
1. 使用限制
无——如果使用它,其他的Struts标签应该被嵌套在它内部。
2. 属性
? xhtml:如果被设置为true,将导致被嵌套的Struts标签按照XHTML 1.0规范呈现它们自己(参见<html:xhtml>)。
? lang:(自从Struts1.2.0之后)。如果设置为true,将在最后的<html>标签中加入一个lang属性。属性值按以下顺序搜索:(1)当前会话的场所;(2)accept-language HTTP请求header;(3)该服务器的默认场所。参考HTML参考文档来理解如何使用HTML的lang属性。
3. 示例
下面说明了如何呈现一个符合XHTML 1.0规范的页面:
4. 对应物
Struts-Faces集成库中的<s:html>标签是一个对应物。
C.1.13 image
这个标签被呈现为一个HTML image 输入字段。单击这个图像将导致外围的表单被提交。
1. 使用限制
这个标签必须用在<html:form>标签之内。需要指定src、srcKey、page或pageKey属性。
2. 属性
前4个公共属性集(evt-attrs、acc-attrs、ren-attrs、struts-attrs)都是可接受的,并且都有其通常的意义。除property属性(稍候解释)外。有几个专门针对image的属性:
? property:这个属性指定返回一个JavaBean的基础对象上的函数,该对象具有setX(int x)和setY(int y)函数,以保存鼠标单击这个图像输入字段时的x、y坐标。如果想要使用基础对象上的setx()和setY()函数,可简单地使用property = " "。
? src/srcKey/page/pageKey:使用这些属性之一来指定将要使用的图像。src是图像的URL。page是图像相对于module的URL(并且因此必须以“/”开头)。key是指向实际的URL的消息资源关键字。
? 显示图像周围边线的宽度。单位是像素。
? locale:指定一个可用于查找保存在当前会话中的Local对象的关键字。这个对象被用来决定所用的任何关键字的值。如果省略,将使用默认的Struts消息资源文件。
3. 示例
下面的代码在JSP中显示了一个图像输入字段:
对应的ActionForm子类可能是:
4. 对应物
无。
C.1.14 img
这个标签被呈现为一个HTML <img>。
1. 使用限制
必须指定这些属性之一:action module或src/srcKey或page/pageKey。
2. 属性
前3个公共属性集都是可接受的:evt-attrs、acc-attrs和ren-attrs。除了这些之外,还有几个专门针对img的属性:
? action/module或src/srcKey或page/pageKey:用于定位需要显示的图像。第一个action/module属性对指定一个表单处理器。当然,action必须以一个斜杠“/”开始,并且如果想要使用一个模块,则需指定module属性。src是该图像的URL。page属性是该图像相对于模块的URL(因此,必须从一个斜杠开始)。带了key的属性版本是指向实际的URL的消息资源关键字。它们对显示本地化图像是非常有用处的。
? border:指定显示在图像周围的边线的宽度。单位是像素。
? locale/bundle:这些属性用于指定一个不同的场所对象或消息资源文件。locale指定一个可用于查找保存于当前会话中的Locale对象的关键字。bundle属性将在<bean:message>条目中详细解释。
? align:指定图像相对于围绕的文本的对齐方式。这是<img>元素的一个标准HTML属性。有效值是left、right、top、texttop、bottom、absbottom、middle和absmiddle。关于这些值具体是什么意思请参考HTML文档。
? height/width:以像素为单位指定最后显示的图像的高度和宽度。图像的缩放是由浏览器进行的。
? hspace/vspace:指定在图像和围绕元素之间的横向间隔(hspace)和垂面间隔(vspace)的大小。单位是像素。
? imageName:呈现为<img>标签内的一个name属性,name = <imageName>。通常被用于脚本。
? ismap:这个逻辑属性是HTML <img>标签的ismap属性的对应物。它被用于指示一个服务器端的图像映射——它仅用于那些不懂得HTML <map>元素的较老的浏览器。为此,几乎不可能使用ismap属性。
? usemap:要使用的HTML <map>元素的名称。这将该图像转变成一个可单击的图像映射。关于如何创建一个<map>参见HTML参考。当用户单击该图像时,浏览器的行为完全是在客户端处理的,并不涉及到服务器端处理。如果想要将鼠标单击位置传递给服务器端代码,可使用<html:image>来代替。
? paramname、paramproperty、paramscope和paramid:可以使用这些属性来创建一个请求参数。请求参数是附加到最后的URL之上的。3个属性中的第一个属性用于在当前请求或会话中定位一个对象。这个对象的toString()的返回值就是一个参数值。参数名称由paramId给出。参看<html:link>中的一个例子。
? name/property/scope:使用这些属性来创建多个参数。请求参数是附加到最后的URL中的。这些属性用于定位一个类型为java.util.Map的对象。Map的关键字是参数名,并且对应的值就是参数值。如果指定property属性,必须也指定name属性。参见<html:link>中的一个例子。
? useLocalEncoding:如果设置为true,则告诉Struts针对当前HttpServletResponse使用什么字符编码。
3. 示例
下面是如何呈现一个本地化图像:
要懂得如何根据图像的URL创建一个或多个请求参数,参看<html:link>条目。
4. 对应物
JSF的<h:graphicImage>是一个对应物。
C.1.15 javascript
这个标签导致用于客户端验证的JavaScript的生成。这个标签与Validator框架联系非常紧密。
1. 使用限制
只有当它伴随一个<html:form>的时候,使用这个标签才是有意义的,因为产生的JavaScript用于客户端表单验证。JavaScript代码是由Validator框架自动产生的。所以,为了这个标签能够工作,ActionForm子类必须是ValidatorForm的子类。
2. 属性
这个标签最常见的应用是不定义任何属性。然而,可以通过使用下列属性对产生的JavaScript进行一些定制:
? bundle:指定用来产生错误消息的一个消息资源束(参见表C-8)。这个属性是在Struts 1.2.7后加入的。参见<bean:message>条目。
? htmlComment:如果设置为true,则用HTML注解定界符(<!--和- - >)来包围该JavaScript。这是需要防止非常老的浏览器将JavaScript呈现到页面上所需的。如果使用了<html:xhtml>或者<html:html xhtml = "true">,这个设置将被忽略。默认值是true。
? cdata:如果cdata = "true",并且如果使用了<html:xhtml>或<html:html xhtml = "true">,产生的JavaScript是被XML的CDATA [...]定界符包围的。
? method:为自动产生的JavaScript的名称指定一个不同的前缀。使用这个属性来防止在自己的JavaScript和Struts产生的JavaScript代码之间的命名冲突。
? scriptlanguage:如果设置为false,忽略产生的<script>标签中的language属性。
? staticjavascript/dynamicjavascript:这两个属性都是逻辑值。staticJavascript(默认值是true)指定来源于Validator框架的静态JavaScript代码是否需要被粘贴到页面中。同样地,dynamicJavascript(默认值是true)指定为表单产生的动态的JavaScript代码是否需要被粘贴到页面中。通常情况下可能会省略这两个属性。
? src:这会将一个HTML src属性放入到被呈现的<script>标签中。可以使用这个属性来指定当页面被浏览器显示的时候想要加载的自己的JavaScript文件。
? page/formName:Validator框架允许创建多页验证(这个主题不是本书的内容)。这个特征在创建简化输入复杂数据的多页向导的时候是很有用的。典型情况是,一次展现给用户一个子表单,其中每个都有“next”和“back”按钮。page属性是当前页面的编号,而formName属性则是表单bean的名称。
3. 示例
最通常的用法是要求进行全部的验证。可以通过不指定属性<html:javascript/>来达到此目的。即使粘贴在页面的任何地方,这也是可以工作的。
4. 对应物
Struts-Faces集成库中的<s:javascript>标签是一个对应物。
C.1.16 link
这个标签呈现为一个HTML link。
1. 使用限制
必须指定action/module、href、page、forward或者linkName属性。
2. 属性
前3个公共属性集都是可接受的:evt-attrs、acc-attrs和ren-attrs。除此之外,还有几个专门针对link的属性:
? action/module、href、page或forward:用于为链接指定一个URL。action/module属性对指定一个表单处理器。当然,action必须以一个“/”开始,并且如果想要指定一个模块,可以使用module属性。href是针对该链接的URL。page是一个相对于模块的URL(因此必须以一个“/”开始)。forward是一个全局转发的名称。linkName是同一个页面中的另一个链接的名称。那个链接的URL也被用于这个链接。
? anchor:该链接的一个可选的HTML锚。
? bundle:用于指定一个不同的消息资源文件。bundle属性在<bean:message>条目中还会详细解释。
? transaction:如果被设置为true,附加当前的事务令牌到链接的URL中作为一个请求参数。参看<logic:present>条目获得关于事务令牌的详细信息。
? paramname、paramproperty、paramscope和paramid:使用这些属性来创建一个请求参数。请求参数是附加到该链接的最后的URL之上的。3个属性中的第一个属性用于在当前请求或会话中定位一个对象。这个对象的toString()的返回值就是一个参数值。参数名称由paramId给出。
? name/property/scope:使用这些属性来创建多个参数。请求参数附加到该链接的最后的URL中。这些属性用于定位一个类型为java.util.Map的对象。Map的关键字是参数名,并且对应的值就是参数值。如果指定property属性,必须也指定name属性。
? useLocalEncoding:如果设置为true,则告诉Struts针对当前HttpServletResponse使用什么字符编码。
3. 示例
这里是使用一个全局转发的简单的例子:
呈现后的链接会具有该success全局转发的真实位置。还可以为该链接包含请求参数:
本代码片段将呈现为一个具有一个名为action的请求参数的链接,该参数的值是由在bean myRequestValue中调用的toString()的返回值给出的。
下面是创建多重请求参数的代码:
4. 对应物
Struts Faces集成库的<s:commandLink>标签是一个对应物。也可以使用JSF的<h:commandLink>,但是会失去使用全局转发和表单处理器的能力。