Untitled Document
Struts1.2.4
新特征
主要修改:
不贊成特征
Struts1.1中已經有很多構造不再贊成使用。許多已經被刪除了。所以在升級到1.2.4時,請clean-compile 你的應用,并且使deprecation warnings 被打開。在升級到1.2.4之前強烈建議解決所有decprecated 的用法。最可能應用開發人員的用法是:
- org.apache.struts.Action statics: 如今使用org.apache.struts.Global statics
- 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 增強
- ValidWhen
Struts Validator 如今支持ValidWhen 規則,以便一個驗證可以依賴于另一個驗證。
- IntRange 現在可以檢測select-one 和radio 字段。比如:這使得我們可以使用一些有效的選項加上一個具有諸如"Choose one" 標題并且值為"-1"的附加選項來組裝一個組合框。那么當用戶試圖提交一個表單時,你可以檢測值是否為-1,從而決定是否沒有選擇選項。
- 你現在可以強制進行客戶端Javascript 驗證來檢測所有約束,而不是停留在第一個錯誤之處。方法是設置Validator PlugIn上的一個新的屬性stopOnFirstError為false。
- "required" 驗證現在可以檢測checkboxes, radio,select-one, 和 select-multiple 字段類型。參見修改后的Validator 示例來看如何使用這些新的特征。
- 一個標準的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 List 和Lazy Map 行為。
jars 中的配置文件
配置文件(如. Struts config, Validator config 和 Tiles 配置文件)現在可以被保存在jars。Struts 會像以前一樣檢查servlet context,但是如果沒找到, Struts 會嘗試classloader 去查找。
Tag Library 改變
Highlighting Errors
Struts現在可以使用HTML Input Tags上的 errorKey, errorStyle, errorStyleClass 和 errorStyleId 屬性自動高亮錯誤字段。
Readonly / Disabled Forms
現在可以使用<html:form> tag的readonly 和disabled屬性來禁止或者使全部的字段只讀。
N.B. readonly 屬性只影響<html:text>, <html:textarea> 和 <html:password> as per the HTML 4 specification。
HTML Tag Refactoring
許多HTML標簽都被重構了,以便更易使用。
- 添加了prepareOtherAttributes() 方法- 剛好在關閉元素之前調用,提供一個地方來渲染額外的屬性。
- name 屬性渲染如今在prepareName() 方法中,以便更易提供定制行為。
- value 屬性如今在prepareValue() 方法中以便更易提供定制行為。
- 當渲染一個屬性時,這些標簽現在使用屬性的getter 而不是直接使用實際的屬性,這意味著如果你想,比如覆蓋TextTag的 styleClass ,那么一個選擇是覆蓋getStyleClass()方法。
- 屬性的渲染現在使用一個簡單的 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) 弱點。