为了更容易、更快速地进行开发,Struts提供了功能同其它JSP标签库类似的五个标签库,即:HTML 、Bean、Logic、Template和Nested。下面我们来一一介绍这五个标签的作用和用法。 一. html 标签 HTML标签库主要用来显示HTML元素,如果不用这种方法,你就必须用HTML标签来指定它们。从表面上 看,这个标签库很简单。但是通过深入研究,我们就会发现它很强大。例如,它可以为我们在HTML表单的 一个特定输入元素中放置重点内容生成JavaScript,或为客户端输入验证生成脚本。而且,你可以用它通 过一行代码来处理错误。然而,在将这个标签库用于你的Struts应用程序前,你需要做些简单的准备工作 。 配置应用程序来运用标签库 在运用Struts HTML标签库前,你需要通过三个步骤来配置一个Struts应用程序。 1. 在部署描述符(web.xml文件)中注册标签库,告诉servlet容器有关Struts HTML标签库的情况, 以及在哪里可以找到标签库的TLD文件,代码如下: <taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> 2. 要确定将struts-html.tld文件复制到WEB-INF目录中。你不用担心标签库类文件,因为它们已经 包含在struts.jar文件中了。 3. 在运用标签库的每个JSP页面中,插入下面的<taglib>指示符: <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> HTML标签库包含几个很容易使用的独立的标签: <html:html>标签 <html:html>标签是HTML标签库中最容易的标签。它有两个属性:locale和xhtml,两者都不是必 需的。 e.g. HelloWorld-html: 建立一个JSP页面welcome.jsp,输入如下内容: <%@ taglib uri="/WEB-INF/struts- html.tld" prefix="html" %> <html:html locale="true"> <head> <title>Welcome</title> </head> <body> Hello World! </body> </html:html> <html:html locale="true">中的locale属性在生成的HTML页面中被转换成了<html lang="zh">。生 成的结果取决于Struts应用程序所位于的服务器的locale。如果你将应用程序部署到一个不同locale的服 务器,你不需要改变代码。Locale会自动调整。 <html:base>标签 <html:base>标签显示一个HTML元素,用一个href属性表示所包含的JSP页面的绝对位置。只有当这个 标签是内嵌在一个head标签部分时,它才有效。e.g. HelloWorld-base: <%@ taglib uri="/WEB-INF/struts- html.tld" prefix="html" %> <html:html locale="true"> <head> <title>Welcome</title> <html:base/> </head> <body> Hello World! </body> </html:html> <html:base>标签会转换成: <html lang="zh"> <head> <title>Welcome</title> <base href="http://localhost:8080/testSite/welcome.jsp" mce_href="http://localhost:8080/testSite/welcome.jsp"> </head> <html:link>标签 <html:link>标签会生成一个超链接。 e.g. <html:link page="/index.jsp">Index</html:link> 会转换成:<a href="/testSite/index.jsp" mce_href="testSite/index.jsp">Index</a> <html:errors>标签 <html:errors>标签的易于使用性通常会掩盖其真正的强大功能。通过一个简单的<html:errors/>标 签,你就可以在一个JSP页面上显示完全自定义的错误信息。 这个标签检查Request对象的属性集合来查找一个reserved key。如果它找到一个reserved key,它 就假设这个key是一个 String、或是一个String数组(它包含在模块的MessageResources中查找的 message keys)、或是类型为 org.apache.struts.action.ActionErrors的一个对象。 如果在应用程序资源中存在相应的信息,那么就可以用下面这些可选的message keys: errors.header:相应的信息在错误信息的单独列表前显示。 errors.footer:相应的信息在错误信息的单独列表后显示。 errors.prefix:相应的信息在错误信息的单独列表前显示。 errors.suffix:相应的信息在错误信息的单独列表后显示。 二. logic 标签 一、定义标签文件(web.xml) <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> 二、引用标签文件(jsp文件) <%@ taglib uri="/tags/struts-logic" prefix="logic" %> 三、标签文件说明(struts-logic.tld) (1)empty标签 类名:org.apache.struts.taglib.logic.EmptyTag 标签体:bodycontent=JSP 引用logic:empty 属性 attribute:name,property,scope 功能:判断对象的值是否为空 (2)equal 类名:org.apache.struts.taglib.logic.EqualTag 标签体:bodycontent=JSP 引用logic:equal 属性 attribute:cookie,header,name,parameter,property,scope,value 功能:等于比较符 (3) forward org.apache.struts.taglib.logic.ForwardTag 标签体:bodycontent=empty 引用logic:forward 属性 attribute:name 功能:页面导向,查找配置文件的全局forward (4) greaterEqual 类名:org.apache.struts.taglib.logic.GreaterEqualTag 标签体:bodycontent=JSP 引用logic:greaterEqual 属性 attribute:cookie,header,name,parameter,property,scope,value 功能:大于等于比较符 (5)greaterThan 类名:org.apache.struts.taglib.logic.GreaterThanTag 标签体:bodycontent=JSP 引用logic:greaterThan 属性 attribute:cookie,header,name,parameter,property,scope,value 功能:大于比较符 (6) iterator 类名:org.apache.struts.taglib.logic.IterateTag 标签体:bodycontent=JSP 引用logic:iterator 属性 attribute:collection,id,indexId,length,name,offset,property,scope,type 功能:显示列表为collection的值(List ,ArrayList,HashMap等) (7)lessEqual 类名org.apache.struts.taglib.logic.LessEqualTag 标签体:bodycontent=JSP logic:lessEqual 属性 attribute:cookie,header,name,parameter,property,scope,value 功能:小于等于比较符 (8)lessThan 类名:org.apache.struts.taglib.logic.LessThanTag 标签体:bodycontent=JSP logic:lessThan 属性 attribute:cookie,header,name,parameter,property,scope,value 功能:小于比较符 (9)match 类名:org.apache.struts.taglib.logic.MatchTag 标签体:bodycontent=JSP 引用logic:match 属性 attribute:cookie,header,location,name,parameter,property,scope,value 功能:比较对象 (10)messagesNotPresent 类名:org.apache.struts.taglib.logic.MessagesNotPresentTag 标签:bodycontent=JSP 引用logic:messagesNotPresent 属性 attribute:name,property,message 功能:ActionMessages/ActionErrors对象是否不存在 (11)messagePresent 类名:org.apache.struts.taglib.logic.MessagesPresentTag 标签:bodycontent=JSP 引用logic:messagePresent 属性 attribute:name,property,message 功能:ActionMessages/ActionErrors对象是否不存在 (12)notEmpty 类名:org.apache.struts.taglib.logic.NotEmptyTag 标签:bodycontent=JSP 引用logic:notEmpty 属性 attribute:name,property,scope 功能:比较对象是否不为空 (13)notEqual 类名:org.apache.struts.taglib.logic.NotEqualTag 标签:bodycontent=JSP 引用logic:notEqual 属性 attribute:cookie,header,name,parameter,property,scope,value (14)notMatch 类名:org.apache.struts.taglib.logic.NotMatchTag 标签:bodycontent=JSP 引用logic:notMatch 属性 attribute:cookie,header,location,name,parameter,property,scope,value 功能:比较对象是否不相等 (15)notPresent 类名:org.apache.struts.taglib.logic.NotPresentTag 标签:bodycontent=JSP 引用logic:notPresent 属性 attribute:cookie,header,name,parameter,property,role,scope,user 功能:request对象传递参数是否不存在 (16)present 类名:org.apache.struts.taglib.logic.PresentTag 标签:bodycontent=JSP 引用logic:present 属性 attribute:cookie,header,name,parameter,property,role,scope,user 功能:request对象传递参数是否存在 (17)redirect 类名:org.apache.struts.taglib.logic.RedirectTag 标签:bodycontent=JSP 引用logic:redirect 属性 attribute:anchor,forward,href,name,page,paramId,paramName,paramProperty,paramScope,property, scope,transaction 功能;页面转向,可传递参数 --------------------------------------------------------------------------------------------------------- Struts常用标签库 logic 标签库主要有如下标签。 • empty: 如果给定的变量为空或者为空字符串,则就计算并输出标签体的内容。 • equal: 如果给定变量与特定的值相等,则会计算并输出该标签体的内容。 • forward: 将某个页面的控制权forward 确定的ActionForward 项。 • greaterEqual: 如果给定变量大于或等于特定的值,则会计算并输出标签体的内容。 • greaterThan: 如果给定变量大于特定的值,则会计算井输出标签体的内容。 • iterate: 通过遍历给定集合的元素,对标签体的内容进行循环。 • lessEqual: 如果给定变量小于或等于特定的值,则会计算并输出标签体的内容。 • lessThan: 如果给定变量小于特定的值,则会计算并输出标签体的内容。 • match: 如果特定字符串是给定消息合适的子字符串,则会计算并输出标签体的内容。 • messagesNotPresent: 如果请求中不包含特定的消息内容,将计算并输出标签体的内容。 • messagesPresent: 如果请求中包含特定的消息内容,则计算并输出标签体的内容。 • notEmpty: 如果给定的变量既不为空,也不是空字符串,则计算并输出标签体的内容。 • notEqual: 如果给定变量不等于特定的值,则会计算并输出标签体的内容。 • notMatch: 如果特定宇符串不是给定消息合适的子字符串,则会计算并输出标签 体的内容。 • notPresent: 如果特定的值没有出现在请求中,则计算并输出标签体的内容。 • present: 如果特定的值出现在请求中,则计算并输出标签体的内容。 • redirect: 重定向页面。 Struts 为html 的大部分标签提供了对应的html 标签, html 所支持的标签大致有如下。 • base: 表现成一个HTML 的<base>标签。 • button: 表现成一个按钮,该按钮默认没有任何动作。 • cancel: 表现成一个取消按钮。 • checkbox: 表现成一个Checkbox 的输入框。 • error: 用于输出数据校验的出错提示。 • file: 表现成一个文件浏览输入框。 • form: 表现成一个form 域。 • frame: 表现成一个HTML<frame>标签。 • hidde: 表现成一个隐藏域。 • htrnl: 表现成HTML 的<html>标签。 • image: 表现成表单域的image 域。 • img: 表现成一个HTML 的img 标签。 • javascrit: 表现成JavaScript 的校验代码,这些校验代码根据ValidatorPlugIn 生成。 • link: 表现成HTML 的超级链接。 • messages: 用于输出Struts 的各种提示信息,包括校验提示。 • multibox: 表现成一个Checkbox 输入框。 • option: 表现成选择框的一个选项。 • password: 表现成一个密码输入框。 • radio: 表现成一个单选输入框。 • reset: 表现成一个重设按钮。 • rewrite: 表现成一个URL 。 • select: 表现成一个列表选择框。 • submit: 表现成一个提交按钮。 • text: 表现成一个单行文本输入框。 • textarea: 表现成一个多行文本框。 bean 标签库主要用于输出属性值、提示消息及定义请求参数等。下面是bean 标签 库的常用标签。 • cookie: 将请求的cookie 的值定义成脚本可以访问的JavaBean 实例。 • define: 将某个bean 的属性值定义成脚本可以访问的变量。 • header: 将请求头的值定义成脚本可以访问的变量。 • include: 将某个JSP 资源完整定义成一个bean 实例。 • message: 用于输出国际化信息。 • page: 将page Context 中的特定项定义成一个bean 。 • parameter: 将请求参数定义成脚本可以访问的变量。 • resource: 加载Web 应用的资源,并将其变成JavaBean。 • struts: 用于将某个Struts 的内部配置成一个bean 。 • write: 用于输出某个bean 的属性值。