struts2 s:optiontransferselect 标签的使用

 有时候需要在两个Select框中双向挪动数据,此种在Struts2叫OptionTransferSelect,效果如下:


在页面中做数据的导出时候使用。

使用此标签时一定要在页面中加入<s:head/> 原因是此标签和dojo的结合。


Question.java

package model;

public class Question {
	private int id;
	private int order;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getOrder() {
		return order;
	}
	public void setOrder(int order) {
		this.order = order;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Question() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Question(int id, int order, String name) {
		super();
		this.id = id;
		this.order = order;
		this.name = name;
	}
	

}

QuestionAction.java

package action;

import java.util.ArrayList;
import java.util.List;

import model.Question;

import com.opensymphony.xwork2.ActionSupport;

public class QuestionAction extends ActionSupport {
	// 未排序试题
	private List<Question> questions = new ArrayList<Question>();
	// 以排序试题
	private List<Question> oQuestions = new ArrayList<Question>();

	// 排序後的数组,数组中存放的试题id
	private String[] rightList = new String[4];

	public String[] getRightList() {
		return rightList;
	}

	public void setRightList(String[] rightList) {
		this.rightList = rightList;
	}

	public List<Question> getoQuestions() {
		return oQuestions;
	}

	public void setoQuestions(List<Question> oQuestions) {
		this.oQuestions = oQuestions;
	}

	public List<Question> getQuestions() {
		return questions;
	}

	public void setQuestions(List<Question> questions) {
		this.questions = questions;
	}

	private List<Question> getAll() {
		List<Question> list = new ArrayList<Question>();
		Question q1 = new Question(1, 0, "q1");
		Question q2 = new Question(2, 0, "q2");
		Question q3 = new Question(3, 0, "q3");
		Question q4 = new Question(4, 0, "q4");
		list.add(q1);
		list.add(q2);
		list.add(q3);
		list.add(q4);
		return list;
	}

	public String seleteAll() {
		questions = getAll();
		return SUCCESS;
	}

	// 传递数据到排序页面
	public String order() {
		questions = getAll();
		return SUCCESS;
	}

	// 排序结束
		public String orderback() {
			for(int i=0;i<rightList.length;i++){
				String key=rightList[i];
				//根据主键查询question对象
				Question q =findQuestionByid(key);
				q.setOrder(i+1);
				oQuestions.add(q);
			}
			questions =oQuestions;
			return SUCCESS;
		}
		
		private Question findQuestionByid(String Key){
			if(Key.equals("1")){
				Question q=new Question(1,0,"q1");
				return q;
			}else if(Key.equals("2")){
				Question q=new Question(2,0,"q2");
				return q;	
		   }else if(Key.equals("3")){
			Question q=new Question(3,0,"q3");
			return q;
			}else{
				Question q=new Question(4,0,"q4");
				return q;
				}
			}
		
}

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<package name="hello" namespace="/hello" extends="struts-default">
		<action name="question" class="action.QuestionAction" method="seleteAll">
			<result name="success">
				/list.jsp
			</result>
		</action>
		<action name="order" class="action.QuestionAction" method="order">
			<result name="success">
				/order.jsp
			</result>
		</action>
		<action name="orderback" class="action.QuestionAction" method="orderback">
			<result name="success">
				/list.jsp
			</result>
		</action>
	</package>
</struts>
list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
   试题列表:
   <s:iterator  value="questions"  var="question"><br/>
     题号 <s:property  value="order"/>:试题<s:property  value="name"/><br/>
      
   </s:iterator>
   <s:a  href="hello/order">排序</s:a>
  </body>
</html>

order.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'list.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>
<s:form   action="/hello/orderback">
	<s:optiontransferselect leftTitle="未排序" rightTitle="已排序"
		doubleList="oQuestions" doubleListKey="id" doubleListValue="name"
		label="试题排序" list="questions" listKey="id"  name="leftList" listValue="name"
		doubleName="rightList"
	    addToLeftLabel="向左移动"
		addToRightLabel="向右移动" 
		headerKey="cnKey"
		headerValue="未排序试题列表"
		doubleHeaderKey="enKey" 
		doubleHeaderValue="已排序试题列表"
		addAllToRightLabel="全部导入右侧" 
        addAllToLeftLabel="全部导入左侧" 
		selectAllLabel="选中所有"
		doubleMultiple="true"
		>

	</s:optiontransferselect>
	<s:submit  value="排序完成" οnclick="selectAllOptionsExceptSome(document.getElementById('leftList'), 'key', 'cnKey');selectAllOptionsExceptSome(document.getElementById('rightList'), 'key', 'enKey');">
	</s:submit>
	
</s:form>
</body>
</html>

点击排序


点击排序完成



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值