??xml version="1.0" encoding="utf-8" standalone="yes"?> 不赞成特?/strong> 虽然没有被删除也没有被标明ؓ不赞成用,最好还是将ActionErrors 替换为ActionMessages 以确保正的操作? Struts Validator 如今支持ValidWhen 规则Q以便一个验证可以依赖于另一个验证?/p>
DigestingPlugIn Struts 对下列组件的依赖性发生了改变Q? 新的版本 Commons BeanUtils Version 1.7.0 Commons Digester Version 1.6 Commons Validator Version 1.1.4 Commons Collections removed Commons Lang removed 在action也新增了一个方法[saveErrors(HttpSession, ActionMessages)]来将errors 保存在Session 中,q且在其W一ơ被讉K之后被自动从Session中删除。这是等同于1.2.4 中message上新增的功能? ActionRedirect 是ActionForward 的一个子c,其设计来用于重定向请求,支持在运行时d参数? DownloadAction 是一个提供了下蝲文g的具体细节的抽象Action? ActionDispatcher 是一个提?em>DispatchAction cd的行Z是不必承自DispatchAction? DynaBean 风格的ActionFormQ它不需要其属性被定义Qƈ提供Lazy List ?em>Lazy Map 行ؓ? 配置文g(? Struts config, Validator config ?Tiles 配置文g)现在可以被保存在jars。Struts 会像以前一h查servlet contextQ但是如果没扑ֈQ?Struts 会尝试classloader L找? Struts现在可以使用HTML Input Tags上的 errorKey, errorStyle, errorStyleClass ?errorStyleId 属性自动高亮错误字Dc? 现在可以使用<html:form> tag?em>readonly ?em>disabled属性来止或者全部的字D只诅R?br>
N.B. readonly 属性只影响<html:text>, <html:textarea> ?<html:password> as per the HTML 4 specification? 许多HTML标签都被重构了,以便更易使用?/p>
bundle 属性被dC下列标签QButtonTag, CancelTag, CheckboxTag, FileTag, FrameTag, HiddenTag, LinkTag, MultiboxTag, PasswordTag, RadioTag, ResetTag, SelectTag, SubmitTag, TextTag, TextareaTag? 现在新增?strong>header, footer, prefix, suffix属性?/strong> Validator 配置文g?e.g. validation.xml)?lt;msg> ?<arg> 元素?em>bundle 属性现在随?lt;msg> ?em>resource 属性一起得到支持? Struts 1.2.8 的主要改变是修正?em>Cross Site Scripting (XSS) q? Struts 1.0 的配|DTD 已经不赞成用,引入了新的struts-config_1_1.dtd。在Struts 1.1 中,已有的Struts 配置文g可以使用q两个版本的DTD载入? 在Struts中用了多个Apache Jarkarta commons的组Ӟ而Commonslgq不仅仅可以用来构徏Struts应用。在Struts1.1中,所使用的Commonslg已经重构来外部依赖于Jarkarta Commons目Q而不?.0中的内部版本? 下面q几个包现在仍然被Struts框架的各U组件用: 另外Q?/strong>Struts 1.1 需要符合JAXP/1.1 (而不是JAXP/1.0) API的XML解析器,比如JAXP/1.1 参考实现和Xerces 1.3.1+? 如果需要从源代码开始构建StrutsQ请使用Ant 1.4 以上版本? 一个新的Commons Validatorlg被集成到Struts 1.1中,包含在新的Validator包中? 引入了一个新的JSP模板l装机制TilesQ通过标签库提供集成? Nested taglib l定CStruts1.1中,增强了现有Struts标签的功能? Struts1.1发布包中包括了针对Validator 和Tiles的新的示例? CVS源代码库中新增了一个目录contribQ包含了很有用的Q但是没有集成到标准代码Z的扩展? 基本的控制器框架 [org.apache.struts.action]新增了一下特征: 文g上传c[org.apache.struts.upload]新增了一下特征: 工具QutilityQ类 [org.apache.struts.util]新增了以下特征: struts-bean 标签库[org.apache.struts.taglib.bean]中新增了以下特征Q? struts-html [org.apache.struts.taglib.html]加入了如下新特征Q? struts-logic 标签库[org.apache.struts.taglib.logic]加入了如下新特征Q? 无变化,但无赞成使用。推荐用Tiles. 基本框架(org.apache.struts.action)q行了如下修Ҏ者修正: utilities (package org.apache.struts.util)发生如下修改和修正: struts-html 标签?package org.apache.struts.taglib.html)发生了如下修改和修正Q? Struts Documentation 应用(对应Struts |站的内?发生了如下修改: Struts MailReader Example Application 发生如下修改和修正: Struts Exercise Taglib Example Application 发生了如下修改和修正Q? q里列出1.0?.1中新增的cd已经不赞成用的c: action actions taglib.html taglib.logic upload util action.Action action.ActionServlet taglib.html.BaseHandlerTag action action.Action ActionServletStruts1.2.4
新特?/h2>
主要修改Q?/h3>
Struts1.1中已l有很多构造不再赞成用。许多已l被删除了。所以在升?.2.4Ӟ请clean-compile 你的应用Qƈ且deprecation warnings 被打开。在升?.2.4之前强烈解决所有decprecated 的用法。最可能应用开发h员的用法是:
TagUtils ?/strong>ModuleUtils
许多以前在org.apache.struts.utils.RequestUtils中找到的工具Ҏ如今UdCorg.apache.struts.taglibs.TagUtils 或org.apache.struts.utils.ModuleUtils包中?
GenericDataSource / GenericConnection 实现被删?/strong>
datasources manager 仍然支持Q但是我们自qdatasource implementationis q不被支持。很Ƣ迎你插入自qDataSource 实现Q但是我们没有资源来l护我们自己的实现。如果你的容器不支持DataSource实现Q推荐用Jakarta Commons?DBCP package?
Validator 增强
一个新的标准PlugIn 可以帮助你在application范围内创Z自己的对象图Qobject graphQ。这是创ZAction调用的业务对象的快捷方式。请参见最新的MailReader CZ来看如何使用DigestingPlugin?
ModuleConfigVerifier
虽然不是全新的,一个标准类Q用来验证模块配|,位于PlugIn 包。ModuleConfigVerifier 主要认Struts对象囄各中lg被蝲入。但是,开发h员可扩展此类来检查确保Struts 配置文g的内部一致性?
提供了支持Maven的项目文?/strong>.
新的配置DTD
推荐使用struts-config_1_2.dtd。新的DTD d了两个新的元?lt;display-name> ?<description> 到struts-config 元素中。这些元素可用于struts配置文g工具和文档生工兗在Struts 1.2.x 中,已有的Struts 配置文g可以使用两个版本的DTD 都可载入?
新的Taglib URIs
标签库的URI已经被修改已反映Struts从Jakarta Ud了Apache 的顶U项目。ؓ了兼容,使用旧的URI的TLD仍然有效Q但是鼓׃用新的URI?
Struts-Chain
试验性的Q这个新?contrib" package 使用了Jakarta Sandbox中的Responsibilty package 的Chainin 来创Z个新的RequestProcessor的Breed。未来版本可能会成ؓ默认实现?
MappingDispatchAction
一个新的标准ActionQ将控制转发到ActionMapping 参数命名的一个方法?
Cancel handlers
DispatchAction, LookupDispatchAction, ? MappingDispatchAction Q如今提供了默认的可以覆写的cancel handler。也可以指定默认的handler name?
Session-scoped ActionMessages
现在你可以将ActionMessages 保存在session 中and have them cleaned up after the first use。现在除了Action.saveMessages() 消息保存在session中还有了另外一U选择。在消息已经被访问过一ơ之后ActionMessages.isAccessed() q回true。RequestProcessor.processCachedMessages() 查询isAccessed() 已决定是否应该将消息从session中删除?
JA Mailreader
Struts Mailreader Example 应用现在包含Japanese 资源文g?
Tiles EL
Tiles tags 如今可以通过Struts EL taglib使用ELQ后者基于JSTL?
Wildcard Mappings
现在可以在actiponMapping中用通配W。详l信息参见Struts Mailreader Example application?
Action attributes
html img tag d了Action 属性,以匹配html link tag?
Module attribute
Forward元素以及多个核心标签中新增一?module" 属性。这个属性允怽通过名称Q或者前~Q指定另一个模块来创徏模块间的直接链接。新的module 属性优于contextRelative属性,q且可以常用?SwitchAction"中?Struts 1.2.7
主要修改
依赖?/h3>
依赖?
Core Struts
Saving Messages in the Session
Re-directing ActionForward
Download Action
Dispatch Helper
Lazy Validator Form
jars 中的配置文g
Tag Library 改变
Highlighting Errors
Readonly / Disabled Forms
HTML Tag Refactoring
Bundle Attribute
ErrorTag
Validator
Resource Bundle Support
struts-examples webapp 中添加了新的面来展C对Resource Bundle 的支持?/em> Struts1.2.8
主要改变
]]>
Struts1.1的修?/h1>
新特?/h2>
引入新的配置DTD
新的Commons 包依赖?/h3>
下面的Commons包包括了对相应的Struts 1.0 中的cȝ替代Q?
XML解析?/h3>
源代?/h3>
集成Struts Validator
Tiles
Nested
新的CZ应用
新的可选组?/h3>
Action 包的增加
Upload ?/h3>
Util ?/h3>
Bean Taglib
HTML Taglib
Logic Taglib
Template Taglib
q性层面的改变
加入了Config Package
Action ?br>
Upload?/h3>文g上传 (package org.apache.struts.upload) [ Upload 应用的一部分]作了如下修改和修正:
Utility?/h3>
Bean Taglib?/h3>struts-bean c标签? [org.apache.struts.taglib.bean]发生了如下修改和修正Q?
HTML Taglib ?/h3>
Documentation CZ应用
MailReader CZ应用
Exercise Taglib CZ应用
不同之处
1.0中不赞成使用Q?.1中已l删除的cR?/h3>
Struts 1.1新增的包
Struts 1.1新增的类
Struts 1.1中新增的cL?/h3>
Struts 1.0 到Struts 1.1不赞成的c?/h3>
Struts 1.0 不赞成的cL?/h3>
]]>
Core和扩展, ?ELQ?TagQ?Tiles, Validation{等几乎都已l是独立模块了?BR>
至于下一代的走向Q原来规划的?个方?nbsp;Q?Action Framework和Shale. 其中Shale相对独立Q即以JSFZ心,补充和完善JSF框架之不I我看倒是有些与ADF Faces在有些地方相|当然是指前端?BR>
只是QActionFramework的核心原来是 COR 模式为基Qƈ且可能还未决断。如今,WW带着Xwork加入Q可是解决了这个问题。从Struts Wiki中,q两个项目还是分开的,从Ted的邮件和WW的消息看来,新项目已l决定是Struts Ti了, 可能会合q成Action Framework,成一个东ѝ是啊,搞那么多q吗Q?BR>
说到Struts TiQ我才想hQ原来有一个项目是Struts TiQ是从BaseBean的BasicPortals发展h的,今天再去看看Q那个项目已l不能访问了QSf上的BasciPortal也不能下载了。纳P我还没研I这个这个Ti有什么关pR?BR>
直接影响我的一个问题是Q我一本以Struts 1.2.X为基的书是l写q是不写Q下一版变化太大了?BR>
StrutsU籍之v式:W?/SPAN>1.2式:部vStrutsCZ应用
StrutsU籍之v式:W?/SPAN>1.3式:q移?/SPAN>Struts 1.1
StrutsU籍之v式:W?/SPAN>1.4式:升?/SPAN>Struts 1.2
StrutsU籍之v式:W?/SPAN>1.5?/SPAN>:?/SPAN>JSP 应用转到Struts
StrutsU籍之v式:W?/SPAN>1.6式:理Struts配置文g
StrutsU籍之v式:W?/SPAN>1.7式:使用Antq行构徏和部|?/SPAN>
StrutsU籍之v式:W?/SPAN>1.8式:?/SPAN>XDoclet 产生Struts配置文g
StrutsU籍之第1D:W?/SPAN>2.1式:用插件来q行应用初始?/SPAN>
StrutsU籍之第1D:W?/SPAN>2.1式:关于标签库声?/SPAN>
StrutsU籍之第1D:W?/SPAN>2.3式:?/SPAN>JSP中用常?/SPAN>
StrutsU籍之第1D:W?/SPAN>2.4式:多配|文?/SPAN>
StrutsU籍之第1D:W?/SPAN>2.5?/SPAN>. 应用重构ؓ模块
StrutsU籍之第1D:W?/SPAN>2.6?/SPAN>. 使用多个资源?/SPAN>
StrutsU籍之第1D:W?/SPAN>2.7?/SPAN>. 讉K来自于数据库中的消息资源
StrutsU籍之第1D:W?/SPAN>2.8?/SPAN>. 有选择地禁?/SPAN>Action
StrutsU籍之第2D:W?/SPAN>3.1式: 使用JSTL
StrutsU籍之第2D:W?/SPAN>3.2式:使用Struts-EL 标签
StrutsU籍之第2D:W?/SPAN>3.3式:昄索引属?/SPAN>
StrutsU籍之第2D:W?/SPAN>3.4式:在表单中使用索引属?/SPAN>
StrutsU籍之第2D:W?/SPAN>3.5式: ?/SPAN>JSTL循环中用烦引属?/SPAN>
StrutsU籍之第2D:W?/SPAN>3.6式: 从图像提交表?/SPAN>
StrutsU籍之第2D:W?/SPAN>3.7式: 动态?/SPAN>JavaScript
StrutsU籍之第2D:W?/SPAN>3.8式:使用JavaScript动态改变选择?/SPAN>
StrutsU籍之第2D,W?/SPAN> 3.9式,产生动态选择列表目
StrutsU籍之第2D:W?/SPAN>3.10?/SPAN>:qo文本输入
lglgQJAVA一直希望有.NET和Delphi的RAD和拖攑ּ开发,虽然现在和那两种q有差距Q但毕竟已经是开始了。第3方组件厂商也开始出现萌芽的态势。另外一个值得注意的趋势就是,AppleQ这个艺术与技术的完美~造者,其WebObjectQ作为Web的组建式框架的祖宗,也准备开放了。而且Q按照Apple也{向Intelq_的介l来看,也许不久的一天,它就可以完美地运行在WinTel架构下了?/EM>
支持渲染包可以是一个非帔R要的特征Q这样可以支持不同的昄技术。移植性很好。针对XMLQ?PDFQ?VML{等。不需要改动其它的东西?/EM>
其实比较特色的是Method Binding,q点在其他EL或者类似的技术上q没有?/EM>
只有Spring 才IoC吗?不是的,其实现在IoC无处不在?/EM>
Struts是一个品,而JSF是一个标准。二者层面不一栗有很多优秀的实C出现的?/EM>
甚以为是Q故摘录于此。原文见Q?A >http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer
其实QJSF的学习曲UK怹低,呵呵?BR>
Validator是一个同用框Ӟ你可以用在很多地方Q包括最q流行的Spring 之中?BR>
本章下蝲?BR>
W?章已l完成。可以在此处下蝲?BR>
查看了一下下载统计,发现了很有趣的现象。如下图Q?BR>
Z么第4章这么少Q下载两q么不^衡?奇怪?Q!
你想要渲染包含HTML标记的数据,q且希望该数据被览器当作HTML标记解释和处理?/P>
很简单,可以使用Q?/P><bean:write name="myForm" property="freeText" filtered="false"/>
在用JSTLӞ你也可以使用未过滤的|
<c:out value="${myForm.freeText}" escapeXml="false"/>在你使用Struts bean:write标签来生文本时Q默认情况下M对HTML处理敏感的字W都要被它们的对{实体代ѝ例如,大于号字W?>) 被替代?amp;gt;字符实体。这U特征称为是响应qoQ?response filteringQ,默认情况下是Ȁzȝ。在大多数情况下Q过滤正是希望的行ؓQ因为未l过滤的文本可能被浏览器误解释。Table 3-4 列出了被bean:write标签qo的字W和它们的对应实体?/P>
Table 3-4. 被过滤的字符 | ||
字符名称 |
字符?/STRONG> |
|
大于 |
< |
< |
于 |
> |
> |
&W号 |
& |
& |
双引?/P> |
" |
" |
反斜?/P> |
\ |
' |
但是有时候,你希望被渲染的文本中包括HTML 标签。假设你有一个在U日志应用,允许用户输入要昄在一个页面中的文本。允怋用HTML 标签得用户可以那些可以格式化文本的标记。文本中可能包含链接,不同的字体,以及囑փ{等。在其他情Ş下,你的应用可能可能q会从其他来源,比如另一个URLQ一个XML文gQ一个Web Service或者数据库中,获得HTML模板文本?/P>
通过bean:write标签的filtered属性设|ؓfalseQ你可以告诉Struts标签不要使用相应的实体替?tag not to Ҏ字符。首先,我们来看一下过滤是如何工作的。假设一个用户在表单中输入了下面的文本:
Apache Struts Web Framework <b>rocks</b>!
现在q个文本被bean:write标签来渲染显C。当filtered 属性设施ؓtrueӞҎ字符被其对{物替换Q这h本看h׃是:
Apache Struts Web Framework <b>rocks</b>!q很有可能不是用h惌的。他惌的是"Apache Struts Web Framework rocks!"。但是,因ؓ意图是想要允许用戯入装饰文本的HTML标签Q那么将filtered属性设|ؓfalse ׃得到正确的渲染:
Apache Struts Web Framework <b>rocks</b>!
览器将认识q个标签Qƈ且按其所愿正的应用HTML 标记?/P>
q在渲染一个Web面时式一个有用的机制。但是,在用这个方法时必须_心。如果数据是没有qo的,那么可能会危及渲染后的 HTML面的布局Q整个页面可能会看v来遭到破坏。例如,假定下面的文本被输入Q?/P>Apache Struts Web Framework <b>rocks<b>!
咋看hQ这没什么问题。但是,注意到b元素的后面一个关闭标{斜杠~失了。这个错误很Ҏ发生Q而且q可能会使得面中后面的所有文本都是粗体?/P>
不幸的是Q要避免q类错误是很困难的。最好还是试囄保输入的数据都是正确有效的HTML。还有个选择是通过XML 解析器来处理输出。它会检诸如标C匚w之类的问题。你q可以通过一些能够试囄正问题的解析器来完成Q比如Jtidy。最后,如果数据是来自于非受控的来源Q你可以选择完全不允许HTML。如果你q想使用一些文本装饰功能的话,q可以考虑使用WikiText 或者UBB Code之类的格式表C来替代?/P>
JTidy 提供了一个命令行接口和Java API 来解析和整理HTML。关?A name=jakartastrutsckbk-CHP-3-ITERM-1594>JTidy 的细节请讉Khttp://jtidy.sourceforge.net?/P>
UBBCode 是PHP本n支持的一U标记格式。也可以在Java中处理UBBCode。一个解?A name=jakartastrutsckbk-CHP-3-ITERM-1595>UBBCode 的PHP函数Q有人在Java中重写了Q地址可见Q?A >http://www.firegemsoftware.com/other/tutorials/ubb.php.
你想要根据从应用模型获得的数据动态生JavaScript?/P>
使用Struts 标签在你惌包含在HTML中的JavaScript 代码中渲染数据:
上述Ҏ产生了一个JavaScript 函数Q弹Z个消息框Q消息文本ؓ"Hello, name!" name的值是使用bean:write标签产生的。此Ҏ展示了用Struts 标签创徏JavaScript 和它们创建HTML一LҎ?/P>
JSTL也可以按q种方式使用?/P>
虽然q种Ҏ很明显,但是很奇怪很多h都在问这个问题。通常问题q可能是Q?我如何才能从Struts中调用HTML中的JavaScript 函数Q? 技术上Ԍ你ƈ不能从Struts调用一个HTML面中的JavaScript 函数。Struts 和JSP 技术都q行在服务器端。相反,JavaScript是在客L的浏览器中处理的。但是,通过q里所q的动态生JS的能力,基本上还是相当于所需的这个行为?/P>
q个Ҏ的一个重要基是JSP的{换过E。JSP 面由JSP 声明Q标准JSP 标签 (比如jsp:useBean), 定制JSP 标签(比如Struts 和JSTP 标签), q行是表辑ּQ以及脚本小E序QscriptletsQ组成。除此之外的其他东西都是模板文本Q?A name=jakartastrutsckbk-CHP-3-ITERM-1548>template textQ?/EM>模板文本可以是Q何不会被JSP转换处理的内宏Vh们通常会认为模板文本就是HTML 标记Q但是它其实是JavaScript 或者其他非JSP 处理的文本。JSP 译器ƈ不关心模板文本采用何UŞ式。因此,你可以象在HTML元素中生文本一样容易地在JavaScript 函数中生文本?/P>
如果你用JSP 来生良构的Qwell-formedQ?A name=jakartastrutsckbk-CHP-3-ITERM-1550>XHTML, 那么动态JavaScript 模版文本必须使用jsp:text元素和CDATA section的方式结合来指定。具体信息参见Hans Bergsten的ONJava 文章Q?A >http://www.onjava.com/pub/a/onjava/2004/04/21/JSP2part3.html?/P>
q里的例子仅仅列Z很简单的使用场景。如果要讉K的模型数据需要用复杂的JavaScript数据l构Q比如,数组Q你可以使用q代标签Q比?A name=jakartastrutsckbk-CHP-3-ITERM-1552>logic:iterate?A name=jakartastrutsckbk-CHP-3-ITERM-1554>c:forEach来组装这些结构?/P>
下一?.8或会使用q代标签来生客L的JavaScript 数组?/P>相关动作
你想要用户能够通过点击一个不在HTML表单标签中的囑փ来提交表单?/P>
适应一个对JavaScript URL 的链接来提交表单Q?BR>
Web 应用l常使用可点ȝ囑փ来提交表单而不是仅仅通过表单按钮。Struts 的html:image标签可以用来产生一个显C图像的HTML input type="image" 标签。但是,对于复杂?HTML 布局Qƈ不L能够图像嵌入在表单<form> . . . </form>标签之中。有些时候,一?HTML 面可能在页面的某一D可能有多个表单Q而提交页面的囑փ则在面的另一个区域。比如,工具条风格的囑փ按钮?/P>
上面的方法可以用于从表单之外的图像提交表单。所昄的图像嵌套在html:link标签中。该链接通过执行一行JavaScript来提交表单。在上面的代码中QJavaScript 提交名为MyForm 的表单。表单名U必d配struts-config.xml文g中所配置的action元素的name属性。下面是q种Ҏ产生的HTML 代码Q?/P>
虽然你可以直接用上qHTML标记而不是Struts html标签Q如果那L话你失去那些标{所提供的特征。通过使用Struts tagQ你׃是必要指定context 名称Qƈ且你可以使图像名U和替换文本来自于资源束 (如果你需要的??/P>
另一个办法是使用html:img 标签的onclick属性:
q种方式的缺ҎQ有些浏览器q不提供囑փ是可以点ȝ一些可视提C线索。因为图像嵌入到一个链接中Q大多数览器都会在改变鼠标指针以提C囑փ是可以点ȝ?/P>
如果你想要你的应用在览器禁止JavaScript的情况下也能够进行,q应该在表单中的某处提供一个常规的提交按钮?/EM> |
W?.9式会描述如何在表单的action属性中指定的地方将表单提交到另外一个URL?/P>
你想要在在JSTL c:forEach循环而不是Struts logic:iterate循环中通过Struts html标签使用索引属性?/P>
Z创徏一个简单烦引属性的字段Q可使用bean:define标签@环计数暴露ؓ一个可用于q行时表辑ּ的脚本变量:
如果索引属性是一个嵌套的bean q且你用的是indexed="true" 属性,那么可以Struts logic:iterate标签替换为JSTL c:forEach:
JSTL的c:forEach标签提供了一些额外的功能q且比logic:iterate更加易用。需要@环遍历的条目可以通过使用EL来指定。JSTL 标签允许寚w合的子集上进行更多的控制Qƈ且@环状态的l节也很Ҏ获得。然而,如同所有JSTL标签一P没有脚本变量被创建。我们在其他招式中所q,在处理烦引属性时Q不得不使用脚本变量。特别是如果你没有用struts-el标签库更是如此?/P>
bean:define标签从JSTL创徏的范围变量中创徏一个基本变量。这个bean:define标签Z取自value属性或者标{体的值创Z一个新的范围变量和对应的脚本变量。后一U方式在JSTL和Struts标签之间建立了一个桥。在q一招中Qbean:define标签用于创徏一个包含可用于讉K索引属性的索引的变量。你可以在第3.4式中的选择喜好颜色的标但中使用q种技术?/P>
ҎW?.4式,你可以用Struts-El标签来消除scriptletQ?/P>
如果需要ؓ一个对象的嵌套属性创Z个HTML 输入字段Q而该对象是一个烦引属性,那么请在Struts html 标签中指定indexed="true" 属性。indexed属性的用法在用JSTL c:forEach循环和用logic:iterate循环时是一L。下面是q种技术如何用在W?.4式中的表单的喜好链接部分Q?/P>
渲染后的索引D正确产生Q哪怕是使用了begin, end, 和step属性来控制循环。下面的c:forEach用法演示了如何ؓ集合的第1个和W?个元素生输入字D:
q将产生下面的HTML:
Z在@环中渲染动态数据以供显C,JSTL 工作的很好,q且比对赢得Struts 标签更易使用。你可以看到QJSTL 在访问烦引属性方面比Struts 标签支持的更好。例如,下面的代码就展示了喜好颜色可以如何显C:
W?.4式演CZ索引属性的cM用法?/P>
你可以参考JSTL 的相x档和信息Q以及书c。JSTL规范参见http://java.sun.com/jsp/jstl.