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>

點擊排序


點擊排序完成



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章