struts1.x 升级到struts2的几点问题

最近将struts1.x+spring2+hibernate3 的环境下的struts1.x升级到 struts2,有些小问题,我将把问题记录下来

1, s:textfield 标签与struts1.x的标签差别大, 运行中生成html脚本时,s 标签会生成额外的 tr, td 标签, 需要添加theme=simple属性,才可以保持原来的页面布局

2, org.springframework.orm.hibernate3.support.OpenSessionInViewFilter失效,也就是lazy加载的对象在action中使用会出问题,就解决的办法很有意思,在web.xml中只要把OpenSessionInViewFilter 这个filter的配置放在struts org.apache.struts2.dispatcher.FilterDispatcher 的前面就好

3, s:form 标签中 action="myaction?param=123" 不行了,要改为action="myaction.do?param=123" (注:struts2 默认的action后缀是.action, 改为.do需要在struts.xml中加上一个配置:
<constant name="struts.action.extension" value="do" />
)

4,不需要encoding filter,只要在web.xml
添加配置<constant name="struts.i18n.encoding" value="GB2312"/>就可以很好的支持汉字,没有乱码

5, <s:select
list="groupUIList"
name="equipmentForm.groupId"
listKey="label"
listValue="value"
emptyOption="true"
cssClass="textbox"
theme="simple"
headerKey="0"
headerValue="请选择"/>
list="groupUIList" 指定的对象必须是collection/array/map/enumeration/iterator ,所以不能放在session或request的attribute里,因为放在session或pageContext都是以Object存放的.

6,radio的选中问题,使用ONGL方式,这个有意思
<s.radio name="user.sex" value="%{user == null || user.sex == null ? 'true' : user.sex}" list='#{"true":"男", "false":"女"}' required="true" />

7,使用struts2上传文件需要s:form 标签,开始我使用原始的html的form标签,结果上传文件总是为空,后来改为s:form标签,action里的file属性就有对象了,不知道背后的机制是什么?

你可能感兴趣的:(struts2,职场,迁移,Struts1.X,休闲)