在struts2,<s:updownselect>标签用于创建一个带有按钮的html选择组件向上或向下移动在选择组件的选项。当提交表单时,所有的选择方案将提交在它们的排列顺序。
这里创建一个web工程:strut2updownselect,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示:
<s:updownselect> 示例
<s:updownselect list="#{'kfc':'kfc', 'mcdonald':'mcdonald', 'burger king':'burger king', 'pizza hut':'pizza hut', 'fat boy king':'fat boy king'}" name="favfastfood" headerkey="-1" headervalue="--- please order ---" size="7" />
产生下面的html代码,选择组件,按钮和javascript在选择组件向下移动的选项。 (默认的xhtml主题)
<tr> <td class="tdlabel"></td> <td><script type="text/javascript" class="lazy" data-original="/struts2example/struts/optiontransferselect.js"> </script> <table> <tr><td> <select name="favfastfood" size="7" id="resultaction_favfastfood" multiple="multiple"> <option value="-1">--- please order ---</option> <option value="kfc">kfc</option> <option value="mcdonald">mcdonald</option> <option value="burger king">burger king</option> <option value="pizza hut">pizza hut</option> <option value="fat boy king">fat boy king</option> </select> <input type="hidden" id="__multiselect_resultaction_favfastfood" name="__multiselect_favfastfood" value="" /> </td></tr> <tr><td> <input type="button" value="^" onclick=" moveoptionup(document.getelementbyid('resultaction_favfastfood'), 'key', '-1');" /> <input type="button" value="v" onclick=" moveoptiondown(document.getelementbyid('resultaction_favfastfood'), 'key', '-1');" /> <input type="button" value="*" onclick="selectalloptionsexceptsome( document.getelementbyid('resultaction_favfastfood'), 'key', '-1');" /> </td></tr> </table></td> </tr> <script type="text/javascript"> var containingform = document.getelementbyid("resultaction"); strutsutils.addeventlistener(containingform, "submit", function(evt) { var updownselectobj = document.getelementbyid("resultaction_favfastfood"); selectalloptionsexceptsome(updownselectobj, "key", "-1"); }, true); </script>
在一个完整的全面<s:updownselect>标签例子来说明如何使用ognl和java列出的数据填充到上下按钮选择列表。
action类来生成和存储选择选项。
updownselectaction.java
package com.h3.common.action; import java.util.arraylist; import java.util.list; import com.opensymphony.xwork2.actionsupport; public class updownselectaction extends actionsupport{ private list<string> movieslist = new arraylist<string>(); private string favmovie; private string favfastfood; public updownselectaction(){ movieslist.add("spider man"); movieslist.add("matrix"); movieslist.add("super man"); movieslist.add("dark knight"); movieslist.add("braveheart"); movieslist.add("ultraman"); } public string getfavfastfood() { return favfastfood; } public void setfavfastfood(string favfastfood) { this.favfastfood = favfastfood; } public list<string> getmovieslist() { return movieslist; } public void setmovieslist(list<string> movieslist) { this.movieslist = movieslist; } public string getfavmovie() { return favmovie; } public void setfavmovie(string favmovie) { this.favmovie = favmovie; } public string execute() throws exception{ return success; } public string display() { return none; } }
通过“<s:updownselect>”渲染上下按钮选择组件标签。
updownselect.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <s:head /> </head> <body> <h1>struts 2 updownselect example</h1> <s:form action="resultaction" namespace="/" method="post" > <s:updownselect list="#{'kfc':'kfc', 'mcdonald':'mcdonald', 'burger king':'burger king', 'pizza hut':'pizza hut', 'fat boy king':'fat boy king'}" name="favfastfood" headerkey="-1" headervalue="--- please order ---" size="7" /> <s:updownselect list="movieslist" name="favmovie" headerkey="-1" headervalue="--- please order ---" size="10" moveuplabel="move up" movedownlabel="move down" selectalllabel="select all" /> <s:submit value="submit" name="submit" /> </s:form> </body> </html>
result.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <body> <h1>struts 2 updownselect example</h1> <h2> favor fast food : <s:property value="favfastfood"/> </h2> <h2> favor movies : <s:property value="favmovie"/> </h2> </body> </html>
<?xml version="1.0" encoding="utf-8" ?> <!doctype struts public "-//apache software foundation//dtd struts configuration 2.0//en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devmode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="updownselectaction" class="com.h3.common.action.updownselectaction" method="display"> <result name="none">pages/updownselect.jsp</result> </action> <action name="resultaction" class="com.h3.common.action.updownselectaction" > <result name="success">pages/result.jsp</result> </action> </package> </struts>
http://localhost:8080/struts2example/updownselectaction.action
选择选项,将其向上或向下。
当提交后,所有的选项都将在它们的排列顺序提交。