Welcome 微信登录

首页 / 软件开发 / JAVA / Unmi的Struts2学习笔记(十三)

Unmi的Struts2学习笔记(十三)2011-09-04 Unmi.cc 隔叶黄莺柏杨在形容中国人不团结,喜欢窝里斗用了这样的话:每一个中国人都是一条 龙,但是三个中国人加在一起──三条龙加在一起,就成了一条猪、一条虫,甚至 连虫都不如--《丑陋的中国人》。可是他老人家走得走,要是能多有半个月的阳 寿,不知作有何感想。

1. <s:optiontransferselect.../> 正是考虑到通常使用而新加的用于 创建两个下拉框,可以来回移动列表项。有属性设置是否显示 "选定左移"、"全 部左移"、"选定右移"、"全部右移" 按钮以及各按钮上的文本,其他的 list/listKey/listValue/doubleList/doubleKey/doubleValue 等属性同 <s:doubleselect.../> 的是一样的。还可设置 allowUpDownOnLeft/allowUpDownOnRight 是否出现相应框的上下移动选择的按钮 (true/false)。

2. <s:radio.../> 的用法与 <s:checkboxlist.../> 完全一样 ,只页面表现不一样,一个多选,一个单选。

3. <s:optgroup.../> 要放在 <s:select.../> 中使用,选项分 组,属性有 list/listKey/listValue,不再说明它们的意义了,参考前篇笔记对 <s:checkboxlist.../> 对应属性的描述,它生成 html 的 <optgroup> 标签。

4. <s:token/> 生成如下的内容:(struts.token.name 标识哪个隐藏 域存了 token 值)

<input type="hidden" name="struts.token.name" value="struts.token"/>

<input type="hidden" name="struts.token" value="7GXL55LPSGU19SDC9D3VP54I20XT3BVA"/>

注意自定义的表单域别重名了。它的作用是防止表单重复提交,每次加载页面 struts.token 的值都不一样,如果两次提交时该值一样,则认为是重复提交。此 时要启用 TokenInterceptor(token) 拦截器,最好是也启用 TokenSessionStoreInterceptor(token-session) 拦截器,不然后台会出现错误 提示:

2008-5-17 22:39:21 com.opensymphony.xwork2.interceptor.ParametersInterceptor setParameters

严重: ParametersInterceptor - [setParameters]: Unexpected Exception catched: Error setting expression "struts.token" with value "[Ljava.lang.String;@1c2e163"

但不影响使用。不过如果只有 token-session 拦截器却是不行的。

token 和 token-session 拦截器的启用,是在 struts.xml 配置文件中,既 可以为包启用,也可以单独为某个 action 启用: