铁手剑谱

上善若水
数据加载中……
Struts Classic 的变迁(下),从1.1到1.2
Untitled Document

Struts1.2.4

新特征

主要修改:

不赞成特征
Struts1.1中已经有很多构造不再赞成使用。许多已经被删除了。所以在升级到1.2.4时,请clean-compile 你的应用,并且使deprecation warnings 被打开。在升级到1.2.4之前强烈建议解决所有decprecated 的用法。最可能应用开发人员的用法是:

    1. org.apache.struts.Action statics: 如今使用org.apache.struts.Global statics
    2. Action.perform: 如今使用Action.execute

虽然没有被删除也没有被标明为不赞成使用,最好还是将ActionErrors 替换为ActionMessages 以确保正确的操作。
TagUtils ModuleUtils
许多以前在org.apache.struts.utils.RequestUtils中找到的工具方法如今移动到了org.apache.struts.taglibs.TagUtils 或org.apache.struts.utils.ModuleUtils包中。
GenericDataSource / GenericConnection 实现被删除
datasources manager 仍然支持,但是我们自己的datasource implementationis 并不被支持。很欢迎你插入自己的DataSource 实现,但是我们没有资源来维护我们自己的实现。如果你的容器不支持DataSource实现,推荐使用Jakarta Commons的 DBCP package。
Validator 增强

  1. ValidWhen

Struts Validator 如今支持ValidWhen 规则,以便一个验证可以依赖于另一个验证。

  1. IntRange 现在可以检测select-one 和radio 字段。比如:这使得我们可以使用一些有效的选项加上一个具有诸如"Choose one" 标题并且值为"-1"的附加选项来组装一个组合框。那么当用户试图提交一个表单时,你可以检测值是否为-1,从而决定是否没有选择选项。
  2. 你现在可以强制进行客户端Javascript 验证来检测所有约束,而不是停留在第一个错误之处。方法是设置Validator PlugIn上的一个新的属性stopOnFirstError为false。
  3. "required" 验证现在可以检测checkboxes, radio,select-one, 和 select-multiple 字段类型。参见修改后的Validator 示例来看如何使用这些新的特征。
  4. 一个标准的validateUrl 规则可以让你能够检测某一个属性是否包含一个格式正确的URL。

DigestingPlugIn
一个新的标准PlugIn 可以帮助你在application范围内创建你自己的对象图(object graph)。这是创建供Action调用的业务对象的快捷方式。请参见最新的MailReader 示例来看如何使用DigestingPlugin。
ModuleConfigVerifier
虽然不是全新的,一个标准类,用来验证模块配置,位于PlugIn 包。ModuleConfigVerifier 主要确认Struts对象图的各中组件被载入。但是,开发人员可扩展此类来检查确保Struts 配置文件的内部一致性。
提供了支持Maven的项目文件.
新的配置DTD
推荐使用struts-config_1_2.dtd。新的DTD 添加了两个新的元素<display-name> 和 <description> 到struts-config 元素中。这些元素可用于struts配置文件工具和文档产生工具。在Struts 1.2.x 中,已有的Struts 配置文件可以使用两个版本的DTD 都可载入。
新的Taglib URIs
标签库的URI已经被修改已反映Struts从Jakarta 移到了Apache 的顶级项目。为了兼容,使用旧的URI的TLD仍然有效,但是鼓励使用新的URI。
Struts-Chain
试验性的,这个新的"contrib" package 使用了Jakarta Sandbox中的Responsibilty package 的Chainin 来创建一个新的RequestProcessor的Breed。未来版本可能会成为默认实现。.
MappingDispatchAction
一个新的标准Action,将控制转发到ActionMapping 参数命名的一个方法。
Cancel handlers
DispatchAction, LookupDispatchAction, 和 MappingDispatchAction ,如今提供了默认的可以覆写的cancel handler。也可以指定默认的handler name。
Session-scoped ActionMessages
现在你可以将ActionMessages 保存在session 中and have them cleaned up after the first use。现在除了Action.saveMessages() 将消息保存在session中还有了另外一种选择。在消息已经被访问过一次之后ActionMessages.isAccessed() 返回true。RequestProcessor.processCachedMessages() 查询isAccessed() 已决定是否应该将消息从session中删除。
JA Mailreader
Struts Mailreader Example 应用现在包含Japanese 资源文件。
Tiles EL
Tiles tags 如今可以通过Struts EL taglib使用EL,后者基于JSTL。
Wildcard Mappings
现在可以在actiponMapping中使用通配符。详细信息参见Struts Mailreader Example application。
Action attributes
html img tag 添加了Action 属性,以匹配html link tag。
Module attribute
Forward元素以及多个核心标签中新增一个"module" 属性。这个属性允许你通过名称(或者前缀)指定另一个模块来创建模块间的直接链接。新的module 属性优于contextRelative属性,并且可以常用于"SwitchAction"中。

Struts 1.2.7

主要修改

依赖性

Struts 对下列组件的依赖性发生了改变:


依赖性

新的版本

Commons BeanUtils

Version 1.7.0

Commons Digester

Version 1.6

Commons Validator

Version 1.1.4

Commons Collections

removed

Commons Lang

removed

Core Struts

Saving Messages in the Session

在action也新增了一个方法[saveErrors(HttpSession, ActionMessages)]来将errors 保存在Session 中,并且在其第一次被访问之后被自动从Session中删除。这是等同于1.2.4 中message上新增的功能。

Re-directing ActionForward

ActionRedirect 是ActionForward 的一个子类,其设计来用于重定向请求,支持在运行时添加参数。

Download Action

DownloadAction 是一个提供了下载文件的具体细节的抽象Action。

Dispatch Helper

ActionDispatcher 是一个提供DispatchAction 类型的行为但是不必继承自DispatchAction

Lazy Validator Form

DynaBean 风格的ActionForm,它不需要其属性被定义,并提供Lazy ListLazy Map 行为。

jars 中的配置文件

配置文件(如. Struts config, Validator config 和 Tiles 配置文件)现在可以被保存在jars。Struts 会像以前一样检查servlet context,但是如果没找到, Struts 会尝试classloader 去查找。

Tag Library 改变

Highlighting Errors

Struts现在可以使用HTML Input Tags上的 errorKey, errorStyle, errorStyleClasserrorStyleId 属性自动高亮错误字段。

Readonly / Disabled Forms

现在可以使用<html:form> tag的readonlydisabled属性来禁止或者使全部的字段只读。
N.B. readonly 属性只影响<html:text>, <html:textarea> 和 <html:password> as per the HTML 4 specification。

HTML Tag Refactoring

许多HTML标签都被重构了,以便更易使用。

  1. 添加了prepareOtherAttributes() 方法- 刚好在关闭元素之前调用,提供一个地方来渲染额外的属性。
  2. name 属性渲染如今在prepareName() 方法中,以便更易提供定制行为。
  3. value 属性如今在prepareValue() 方法中以便更易提供定制行为。
  4. 当渲染一个属性时,这些标签现在使用属性的getter 而不是直接使用实际的属性,这意味着如果你想,比如覆盖TextTag的 styleClass ,那么一个选择是覆盖getStyleClass()方法。
  5. 属性的渲染现在使用一个简单的 prepareAttribute() 方法来产生name="attribute" 格式,使多数属性渲染一个一行语句。

Bundle Attribute

bundle 属性被添加到了下列标签:ButtonTag, CancelTag, CheckboxTag, FileTag, FrameTag, HiddenTag, LinkTag, MultiboxTag, PasswordTag, RadioTag, ResetTag, SelectTag, SubmitTag, TextTag, TextareaTag。

ErrorTag

现在新增了header, footer, prefix, suffix属性。

Validator

Resource Bundle Support

Validator 配置文件中(e.g. validation.xml)的<msg> 和 <arg> 元素的bundle 属性现在随同<msg> 的resource 属性一起得到支持。
struts-examples webapp 中添加了新的页面来展示对Resource Bundle 的支持。

Struts1.2.8

主要改变

Struts 1.2.8 的主要改变是修正了Cross Site Scripting (XSS) 弱点。

 

posted on 2005-12-28 15:41 铁手 阅读(4881) 评论(6)  编辑  收藏 所属分类: JavaStruts系列框架

评论

# re: Struts Classic 的变迁(下),从1.1到1.2 2005-12-29 13:17 maafei

老兄的文章不错,就是看老兄翻译的文章入门struts的。
之后又看了很多老兄的总结,很实用。
鼓励一下,希望能看到更多更好的文章。
  回复  更多评论    

# re: Struts Classic 的变迁(下),从1.1到1.2 2005-12-30 08:47 Pirate

很好 我就遇到了升级的问题 看了 这篇文章很有收获!
  回复  更多评论    

# re: Struts Classic 的变迁(下),从1.1到1.2 2006-01-23 11:29 ajian

向铁手学习。正在看Struts in Action.很有收获。谢谢。。
  回复  更多评论    

# re: Struts Classic 的变迁(下),从1.1到1.2 2006-06-23 12:59 Joule

Thank you !
  回复  更多评论    

# re: Struts Classic 的变迁(下),从1.1到1.2 2006-10-21 10:53 lvht

谢谢啦
  回复  更多评论    

# re: Struts Classic 的变迁(下),从1.1到1.2 2006-12-05 16:55 求助

俺是一个补学者,请大家多帮一下,有没有关于struts 的入门资料,给一点,不胜感激! 俺的邮箱是:nanweima@163.com
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: