第1.4式. 从Struts 1.1 升级至Struts 1.2
问题
你想要升级基于Struts 1.1 的应用至Struts 1.2。
动作分解
| Table 1-4. Struts 1.1 和 1.2 的Taglib URI | 
| Struts 1.1 Taglib URI | Struts 1.2.4 Taglib URI | 
| http://jakarta.apache.org/struts/tags-bean | http://struts.apache.org/tags-bean | 
| http://jakarta.apache.org/struts/tags-html | http://struts.apache.org/tags-html | 
| http://jakarta.apache.org/struts/tags-logic | http://struts.apache.org/tags-logic | 
| http://jakarta.apache.org/struts/tags-template | http://struts.apache.org/tags-template | 
| http://jakarta.apache.org/struts/tags-tiles | http://struts.apache.org/tags-tiles | 
| http://jakarta.apache.org/struts/tags-nested | http://struts.apache.org/tags-nested | 
 
- 将validation.xml文件中开头的的DOCTYPE 声明修改为:
 
 <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> 
 
- 将struts-config.xml文件中开头的DOCTYPE 声明修改为:
 
 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> 
 
- 将ActionError 类的使用替换为ActionMessage 类。
- 将除了定制ActionForms 的validate( )方法之外的地方的ActionErrors类的使用替换为ActionMessages类。
- 去除ActionServlet中除了config参数之外的其他任何init-param元数的依赖。这些参数在Struts 1.1 中已经不赞成,而在Struts 1.2已经不支持。而是将这些参数值移到struts-config.xml文件中。这些参数大多数被controller元素的属性替代了。
- 去除html:form标签中对name, scope, 和type属性的依赖。这些参数在Struts 1.1 中已经不赞成,而在Struts 1.2已经不支持。
动作变化
Struts 1.2 的正式目标是去除不赞成方法并完成对模块化的支持。尽管Struts 1.2 并未对Struts 1.1 的核心进行彻底的修改,它也包括了一些值得努力去升级的新的特征和增强。大部分这些特征都将在本秘籍中讨论。下面是一些明显的增强:
- 新的validwhen校验器用作复杂的交叉字段校验(第8.4式)
- 支持通配符的action mapping,允许你在多个相关的URL中重用action元素。(第7.8式)
- 新的预构建的action 包括一个新的MappingDispatchAction类和一个场所切换LocaleAction类(第6.10 式和第12.4式)
对于新应用,应该尽量使用Struts 1.2。如果你已经有一个Struts 1.1 应用,你将发现Struts 1.2 引入了大量新的和有用的特征。比之于从Struts 1.0 升级至Struts 1.1,从升级Struts 1.2 要容易些,只需要少一些的代码修改。
相关招式
Struts wiki 有一些关于这个升级的详细内容。相关的wiki 页面可以在http://wiki.apache.org/struts/StrutsUpgradeNotes11to124中找到。