最新消息:

Struts2 OptionTransferSelect标签使用

技术 admin 2874浏览 0评论

 

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

optiontransferselect

1. Action层

TransferSelect.java

package com.mobilesoft.esales.webapp.action;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import org.apache.log4j.Logger;

public class TransferSelect extends BaseAction {

private static final Logger logger = Logger.getLogger(DoubleListAction.class);

    String[] leftRoles;

    String[] rightRoles;

public String execute(){   

return SUCCESS;

    }

public String transferSelect(){

       ArrayList<Roles> leftList=new ArrayList<Roles> ();     

       Roles leftRoles1=new Roles();

       leftRoles1.setRoleId(1);

       leftRoles1.setRoleName(“角色1”);

       Roles leftRoles2=new Roles();

       leftRoles2.setRoleId(2);

       leftRoles2.setRoleName(“角色2”);

       Roles leftRoles3=new Roles();

       leftRoles3.setRoleId(3);

       leftRoles3.setRoleName(“角色3”);

       Roles leftRoles4=new Roles();

       leftRoles4.setRoleId(4);

       leftRoles4.setRoleName(“角色4”);

       leftList.add(leftRoles1);

       leftList.add(leftRoles2);

       leftList.add(leftRoles3);

       leftList.add(leftRoles4);

       ArrayList<Roles>  rightList=new ArrayList();     

       Roles rightRoles1=new Roles();

       rightRoles1.setRoleId(1);

       rightRoles1.setRoleName(“角色5”);

       Roles rightRoles2=new Roles();

       rightRoles2.setRoleId(2);

       rightRoles2.setRoleName(“角色6”);

       Roles rightRoles3=new Roles();

       rightRoles3.setRoleId(3);

       rightRoles3.setRoleName(“角色7”);

       Roles rightRoles4=new Roles();

       rightRoles4.setRoleId(4);

       rightRoles4.setRoleName(“角色8”);

       rightList.add(rightRoles1);

       rightList.add(rightRoles2);

       rightList.add(rightRoles3);

       rightList.add(rightRoles4);    

       getRequest().setAttribute(“rightList”, rightList);

       getRequest().setAttribute(“leftList”, leftList);

return SUCCESS;

    }

public String transferSelectPost(){

       Map map=getRequest().getParameterMap();

       Set set=map.entrySet();

       Iterator iterator=set.iterator();

while(iterator.hasNext()){

           Map.Entry mapEntry=(Map.Entry)iterator.next();

if(mapEntry.getValue() instanceof String[]){

              String[] selectValues=(String[])mapEntry.getValue();

for(int i=0;i<selectValues.length;i++){

logger.fatal(“For map test,The key is: “+mapEntry.getKey()+”,value is :”+selectValues[i]); 

              }

           }

       }

for(int i=0;i<leftRoles.length;i++){

logger.fatal(“For Array test,The leftRoles roleName is: “+leftRoles[i]); 

       }

for(int i=0;i<rightRoles.length;i++){

logger.fatal(“For Array test,The rightRoles roleName is: “+rightRoles[i]);  

       }     

       getRequest().setAttribute(“map”, map);

return SUCCESS;

    }

public void setLeftRoles(String[] leftRoles) {

this.leftRoles = leftRoles;

    }

public void setRightRoles(String[] rightRoles) {

this.rightRoles = rightRoles;

    }  

}

Roles.java

package com.mobilesoft.esales.webapp.action;

public class Roles {
    private Integer roleId;
    private String roleName;
    public Roles(){
    }
    public Integer getRoleId() {
        return roleId;
    }
    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
}

2. Web层

transferselect.jsp

<%@ taglib prefix=”s” uri=”/struts-tags” %>

<%@ page language=”java” errorPage=”/error.jsp” pageEncoding=”GBK” contentType=”text/html;charset=GBK” %>

<html>

<head>

<title>Struts 2 Cool Tags – OptionTransferSelect</title>

<s:head theme=”ajax”/>

</head>

<body>

<h2>用户角色授权</h2>

<s:form action=”transferSelectPost” name=”form1″ >

<s:optiontransferselect

label=”测试-Action数据”

name=”leftRoles”

            leftTitle=”用户已授权角色”

            list=”#request.leftList”

            listKey=”roleId”

            listValue=”roleName”

multiple=”true”

            headerKey=”headerKey”

            headerValue=”— 请选择用户
角色 —”

            emptyOption=”false”

            allowUpDownOnLeft=”false”

            cssStyle=”width:200px;height:300px;”

            rightTitle=”用户未授权的角色”

            doubleList=”#request.rightList”

            doubleListKey=”roleId”

            doubleListValue=”roleName”

            doubleName=”rightRoles”

            doubleHeaderKey=”doubleHeaderKey”

            doubleHeaderValue=”— 请选择用户角色 —”

            doubleEmptyOption=”false”

            doubleMultiple=”true”

            allowUpDownOnRight=”false”

            doubleCssStyle=”width:200px;height:300px;”

/>

<s:submit align=”left”/>

</s:form>

</body>

</html>

transferselectpost.jsp

<%@ taglib prefix=”s” uri=”/struts-tags” %>

<%@ page language=”java” errorPage=”/error.jsp” pageEncoding=”GBK” contentType=”text/html;charset=GBK” %>

<html>

<head>

<title>Struts 2 Cool Tags – OptionTransferSelect</title>

<s:head />

</head>

<body>

<h2>选择结果</h2>

<s:form action=”transferSelect” name=”form1″ >

<s:iterator value=”#request.map” status=”mystatus”>

<tr>

<td>

<s:property value=”key” />:<s:property value=”value” />,             

</td>

</tr>

</s:iterator>

<s:submit align=”left”/>

</s:form>

</body>

</html>

3. struts.xml

<action name=”transferSelect” method=”transferSelect” class=”com.mobilesoft.esales.webapp.action.TransferSelect”>

<result name=”success”>test/transferselect.jsp</result>

</action>

<action name=”transferSelectPost” method=”transferSelectPost” class=”com.mobilesoft.esales.webapp.action.TransferSelect”>

<result name=”success”>test/transferselectpost.jsp</result>

</action>

 

转载请注明:出家如初,成佛有余 » Struts2 OptionTransferSelect标签使用

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (0)

  1. 不错~~学到了。 感谢楼主分享……
    张震讲鬼故事16年前 (2008-04-02)回复
  2. 谢谢了,学习了。就是不知道试试行不行。
    13年前 (2011-08-26)回复
  3. LZ我想请教optiontransferselect标签,我不知道那个list里面的值应该怎么写,我看网上很多都是写#request.*,我也跟着这样写,但发现列不出,后来我试着讲拿出来的List类对象组放入map之中,再分别用#request.session.*和#request.*和#session.*都列不出我想要的值
    struts2初学者13年前 (2011-09-06)回复