struts标签.docx
- 文档编号:18273876
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:29
- 大小:31.05KB
struts标签.docx
《struts标签.docx》由会员分享,可在线阅读,更多相关《struts标签.docx(29页珍藏版)》请在冰点文库上搜索。
struts标签
1、Struts标签库详解,非常好的Struts标签详解
关键字:
struts标签库struts标签
本文转自:
作者:
xzkcz
Struts提供了五个标签库,即:
HTML、Bean、Logic、Template和Nested。
HTML标签:
用来创建能够和Struts框架和其他相应的HTML标签交互的HTML输入表单
Bean标签:
在访问JavaBeans及其属性,以及定义一个新的bean时使用
Logic标签:
管理条件产生的输出和对象集产生的循环
Template标签:
随着Tiles框架包的出现,此标记已开始减少使用
Nested标签:
增强对其他的Struts标签的嵌套使用的能力
使用固定属性名称的Struts标签:
id:
命名自定义标签创建时的脚本变量名。
name:
指出关键字值,在该关键字下可以找到一个存在的bean。
如果给出了scope属性,则仅仅在scope中查找。
否则,根据标准的顺序在各种scope中查找:
(page,request,session,orapplication)。
property:
指出bean中的某个属性,可以在其中检索值。
如果没有标明,则使用对象本身的值。
scope:
定义了Bean在哪个范围(page,request,session,orapplication)中被查找。
如果没有标明按顺序查找。
脚本变量(见id)将在相同的范围中创建。
Struts标签也支持嵌套引用,例如:
Property="foo.bar.baz"
这相当于进行下面的调用:
getFoo().getBar().getBaz();
或者做为setter:
getFoo().getBar().setBaz(value);
虽然Struts标签的设计原意是为了避免使用scriptlet,scriptlet的表达式还能够提供给所有的Struts标签使用。
但请确保使用完整的表达式:
错误:
正确:
linkhref="'<%="/"+name+"/index.jsp"%>'>//表达式必须提供整个属性值 Html标签库 标签 它有两个属性: locale和xhtml,两者都不是必需的。 htmllocale=\"true\"> 此行代码解析后: 说明: 生成的结果取决于Struts应用程序所位于的服务器的locale。 如果你将应用程序部署到一个不同locale的服务器,你不需要改变代码,Locale会自动调整。 表示所包含页面的绝对位置。 这个标签只有内嵌在head标签中才有效 base/> 此行代码解析后: 最重要的属性page: 图象文件的路径,前面必须带有一个斜线。 其它属性: height、width、alt。 imgpage=\"/logo.gif\"height=\"50\"width=\"200\"alt=\"WebLogo\"/> 标签 linkpage=\"/index.html\">Clickdemo link> 此行代码解析后: 通过一个简单的 errors/>标签,你就可以在一个JSP页面上显示完全自定义的错误信息。 功能超强大! ! 说明: 这个标签在Request对象的属性集合中查找reservedkey。 如果它找到一个reservedkey,它就假设这个key是一个String、或是一个String数组 (它包含在模块的MessageResources中查找的messagekeys)、或是类型为org.apache.struts.action.ActionErrors的一个对象。 如果在应用程序资源中存在相应的信息,那么就可以用下面这些可选的messagekeys: ·errors.headerorerrors.prefix: 相应的信息在错误信息的单独列表前显示。 ·errors.footerorerrors.suffix: 相应的信息在错误信息的单独列表后显示。 使用 标签中必须包含一个action属性,它是这个标签中唯一必需的属性。 如果不具备该属性则JSP页面会抛出一个异常。 之后你必须给这个action属性指定一个有效值。 一个有效值是指应用程序的Struts配置文件中元素里的任何一个子元素的访问路径。 而且相应的元素中必须有一个name属性,它的值是formbean的名称。 formaction=\"/login\"> 如果你有上述一个标签,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素: type=\"com.javapro.struts.LoginAction\" name=\"loginForm\" scope=\"request\" input=\"/login.jsp\"> . . . //这就是说一个form标签是和formbean相关联的 任何包含在 比如,如果你有一个属性值被指定为“username”的 输入 比如,你可以用focus属性来生成JavaScript,它会“定焦”(focus)到该form所包含的一个元素上。 使用focus属性时你需要给它指定元素的名称。 formaction=\"/login\"focus=\"password\"> UserName: textproperty=\"userName\"/> textproperty=\"password\"/> submit/> form> 代码解析后: UserName: -- if(document.forms[\"loginForm\"].elements[\"password\"].type! =\"hidden\") document.forms[\"loginForm\"].elements[\"password\"].focus() //--> 有没有看到这个标签库是如何建立JavaScript来定焦到password元素上的? 这也是该库让人着迷的地方之一。 你不用担心如何在客户端进行编程,它会帮你自动生成。 还可以看到, 都有一个property属性,最后会被转换成HTML中的name属性,当然还有name和value属性。 passwordproperty=\"password\"redisplay=\"false\"/> 该标签中的一个很重要的属性是"redisplay",它用于重新显示以前输入到这个区域中的值。 该属性的缺省值为true。 然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。 selectproperty=\"color\"size=\"3\"> optionvalue=\"r\">red option> optionvalue=\"g\">green option> optionvalue=\"b\">blue option> select> 2、StrutsBean标签 cookie 常用属性: id: 定义一个javax.servlet.http.Cookie类型的变量,这个变量被存放在page范围内。 name: 指定Cookie的名字。 value: 指定Cookie的默认值。 如果有name属性指定的cookie不存在,就是使用value属性指定的默认值。 更多cookie信息 define 这个标签基于来自一个给定的字符串,或另一个JavaBean的数据暴露一个变量。 scriptlet及其他标签可以像访问任何其他的变量一样访问这个暴露变量。 这可能好像没有什么用处,但是它的确有用。 参见具体的例子。 也请参考cookie/header/parameter和page条目,其中有相关的标签。 1.使用限制 id属性是必需的,并作为要暴露的变量的名称。 也需要指定name/property/scope或value,或者将暴露的变量的值嵌入到”bean: define”标签的标签体内部。 还有,只可以一次定义一个变量。 试图在同一个页面中定义一个同名的新变量将导致抛出异常。 更多define信息 header bean: header标签取回请求中名称为name的header的值。 如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean。 如果指定了multiple属性则依据刚取回的值创建一个String[]类型的数组。 然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。 下面是我的浏览器发送的header的内容,这些内容和浏览器有关,因此您的浏览器发送的内容可能和下面列出的不同。 不过这没有关系,因为要理解bean: header标签您只要对这些内容有一个大概的认识就足够了。 更多header信息 include 这个有趣的标签允许调用一个外部的JSP或全局转发或URL,并且将结果响应数据作为一个变量访问。 被调用页面的响应不会写出到响应流。 如果该暴露的变量是用”bean: write”显示的,接收到的输出是经过HTML编码的(““”被替换为“&It;”,等等)。 1.使用限制 必须指定id属性和forward、page或者href属性之一。 2.属性 id: 要暴露的变量的名称。 scriptlet及其他定制标签将能够使用这个名称来访问该新变量。 结果变量是页面作用域的。 forward: 要调用的全局转发的名称。 page: 要调用的当前Web应用中的JSP页面的名称。 这个名称是相对于模块的,并且需要一个“/”前缀。 href: 外部页面的的绝对URL,例如http: //www.kenyir.org/code/index.html。 anchor: 被调用页面的HTML锚的名称。 transaction: 如果被设置为true,则会在响应中包含事务令牌。 参见”logic: redirect”条目中的说明。 更多include信息 message 这个标签显示一个国际化了的消息。 最多可以指定5个替代参数。 1.使用限制 必须指定key属性或者name/property/scope组合。 2.属性 key: 要显示的消息资源的关键字。 如果locale/bundle组合没有被指定,那么默认消息资源文件和用户的当前场所将被用来决定显示哪个消息资源。 name/property/scope: 这些属性被用来基于一个具有给定的name和可选的property和scope属性的对象来导出一个关键字。 如果没有指定scope,将在所有作用域中查找给定名称的对象。 locale/bundle: 这些属性用于指定一个不同的场所对象或消息资源文件。 locale指定一个可用于查找存储于当前会话中的Locale对象的关键字。 bundle属性将在下面的小节中详细解释。 arg0/arg1/arg2/arg3/arg4: 这些分别是第一个、第二个、第三个、第四个以及第五个替代参数的值。 更多message信息 page 这个方便的标签将来自于页面上下文中的对象暴露为可以通过scriptlet或定制标签访问的变量。 PageContext对象是当前页面的所有状态的储存库。 这包含在第2章描述过的会话(HttpSession)和请求(HttpServletRequest)中。 还有一些: application: javax.servlet.ServletContext对象,通过调用pageContext.getServlet-Context()来获得。 config: javax.servlet.ServletConfig对象,通过调用pageContext.getServletConfig()来获得。 不要将其与Struts的内部配置对象搞混淆。 response: 与此页面关联的HttpServletResponse对象。 更多page信息 parameter bean: parameter标签取回请求中的参数值。 如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean。 如果指定了multiple属性则依据刚取回的值创建一个String[]类型的数组。 然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。 下面的两个代码片段使用相同的url传递参数,url的形式为http: //127.0.0.1: 8080/struts-demo/parameter.jsp? param=1¶m=2¶m=3。 前面的代码片段中没有指定multiple属性,因此p是String类型而且仅仅读取了参数的第一个值。 后面的代码片段中指定了multiple属性的值,因此ps是String[]类型的包含所有参数的值。 更多parameter信息 resource resource允许从当前Web应用程序读取任何文件并且将其暴露为一个字符串变量或者一个InputStream。 参见”bean: include”。 1.使用限制 id属性和name属性是必需的。 2.属性 id: 要暴露的变量的名称。 scriptlet及其他定制标签将能够使用这个名称来访问该新变量。 这个属性是必需的。 name: 要加载资源的模块相对的名称。 input: 如果这个属性被指定(实际的值并不重要),那么该暴露的变量具有InputStream类型,否则它是String类型。 更多resource信息 size 这个标签将一个给定的Collection或者Map或者数组的大小暴露为一个变量(整数类型),可以从scriptlet或定制标签访问到。 1.使用限制 id属性是必需的,并且必须指定想要测量大小的数组/Collection/Map,使用collection属性或者一个name/property/scope组合。 2.属性 id: 要暴露的变量的名称。 scriptlet及其他定制标签将能够使用这个名称来访问该新变量。 这个属性是必需的。 name/property/scope: 这些属性被用来定位Collection/Map/数组,基于可选的属性和作用域。 如果没有指定scope,将在所有作用域中查找给定名称的对象。 collection: 这个是name/property/scope组合的一个非常方便的替换物。 使用scriptlet来计算这个属性的值, 更多size信息 struts 这个标签暴露一个Struts全局转发,或表单bean或表单处理器(该表单处理器的ActionMapping)为一个变量,可以通过scriptlet及其他标签进行访问。 如果想要JSTL能够访问Struts的内部变量,这是很有帮助的。 1.使用限制 id属性是必需的。 还必须指定forward、formBean或mapping属性。 2.属性 id: 要暴露的变量的名称。 scriptlet及其他定制标签将能够使用这个名称来访问该新变量。 这个属性是必需的。 forward: 要暴露的全局转发的名称。 formBean: 要暴露的已经声明的表单bean的名称。 mapping: 要暴露的表单处理器的名称。 更多struts信息 write 这个标签将指定的bean属性输出为响应流。 它允许对给定的bean属性进行一些格式化。 1.使用限制 name属性是必需的。 2.属性 name/property/scope: 这些属性被用来基于给定的name和可选的property和scope来定位JavaBean。 如果没有指定scope,将在所有作用域中查找给定名称的对象。 ignore: 如果被设置为true,则一旦命名的JavaBean没有找到,则失败,什么也不会发生。 默认值(false)导致一个异常被抛出。 更多write信息 ======================== 3、StrutsHtml标签 cancel html: cancel标签生成一个取消按钮。 当点击该按钮后actionservlet会绕过相应的formbean的validate()方法,同时将控制权交给相应的action。 在该action中可以使用Action.isCancelled(HttpServletRequest)方法判断是否被取消了。 如果返回true表示这个action被取消了,否则表示这个action没有被取消。 请注意,如果您修改了html: cancel标签的property属性值,那么struts提供的cancel探测机制就失效了,您自己必须提供类似的机制。 下面是可取消的action的配置文件,注意 这是我在完成本指南的过程中发现的唯一向下不兼容的地方。 更多cancel信息 checkbox html: check标签生成一个checkbox。 这里的value值可以是true,yes或on。 如果您要提交其它的值(如某种形式的标识)应该考虑使用html: multibox标签。 注意: 为了正确的处理没有选中的checkbox您必须在reset()中设置对应的属性为false。 下面的代码示例了html: checkbox标签的用法,其中CheckboxForm中声明了三个boolean类型的域,如下: --略掉了get方法(也可以是isXXX形式)和set方法--> privatebooleanone=false; privatebooleantwo=false; checkboxname="checkboxForm"property="one">One checkbox> checkboxname="checkboxForm"property="two">Two checkbox> 如果选中后被提交则相应的属性的值为true。 更多checkbox信息 errors html: errors标签和html: messages标签的功能相似,做比较介绍。 html: errors标签将由name属性指定的ActionMessages、ActionErrors、String和String[]直接输出到页面中。 html: messages标签将用由name属性(注意message属性值对它的影响)指定的ActionMessages、ActionErrors、String和String[]创建一个新的属性和scripting变量,使用id属性值作为名称。 html: errors标签和html: messages标签的property属性是用来为errors和messages分类的。 我们可以给这两个标签指定property属性,以便只显示某一类的错误或消息。 更多errors信息 form 示例 通常,可以指定action和focus属性: formaction="login.do"focus="userId"> textproperty="userId"> .... form> 更多form信息 frame 呈现为一个HTML“frame”。 使用”html: frame”的好处在于可以使用全局转发或表单处理器来轻易地将内容放入frame中。 1.使用限制 必须指定action/标签
Password:
Password:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts 标签
![提示](https://static.bingdoc.com/images/bang_tan.gif)