打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Struts2 OptionTransferSelect标签使用

Struts2 OptionTransferSelect标签使用

文章分类:Java编程

转自 出家如初,成佛有余

有时候需要在两个Select框中双向挪动数据,此种在Struts2叫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"

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

</action>

<action name="transferSelectPost" method="transferSelectPost"

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

</action>

 

 

jsp中的<s:optiontransferselect />标签已正常显示使用
<s:optiontransferselect tooltip="用户权限" label="设置权限"
name="mhPopedom.leftList_1"
leftTitle="用户未授权限"
list="leftList_1"
listKey="popeId"
listValue="popeName"
headerKey="headerKey"
multiple="true"
emptyOption="false"
allowUpDownOnLeft="false"
cssStyle="width:200px;height:300px;"
cssClass="input2"

addToLeftLabel="向左移动"
addToRightLabel="向右移动"
addAllToLeftLabel="全部左移"
selectAllLabel="全部选择"
addAllToRightLabel="全部右移"

doubleName="rightPopedom"
rightTitle="用户已授权限"
doubleList="rightList_1"
doubleListKey="popeId"
doubleListValue="popeName"
doubleHeaderKey="doubleHeaderKey"
doubleMultiple="true"
doubleEmptyOption="false"
allowUpDownOnRight="false"
doubleCssClass="input2"
doubleCssStyle="width:200px;height:300px;">
</s:optiontransferselect>
但不论怎样在action中都不能获得rightPopedom的值,报空指针异常。
请各位帮忙,在线急等!!!!
flybida 2009-07-28
后台action里面添加属性(setXXX和getXXX方法):
private String[] leftList;
private String[] rightList;

在前台页面上,当提交表单时,onclick事件调用下面的js:
<script type="text/javascript">
  function myself(){
  var right=document.forms[0].rightList;
  for(i=1; i <right.length; i++)
    right[i].selected = true;
  }
</script>
提交后,就能在后台得到rightList里面的值了。
如果没有这段Js代码,后台是得不到值的,这是Struts2 <s:optiontransferselect/>本身的bug.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
优秀领导的九个角色 | 9 Roles For Great Leadership
4❤️Jenkins从零到壹❤️ :用户权限管理(JAVA 小虚竹)
功能权限和数据权限管理的实现
SAP Fiori系统配置之完结篇
Oracle 用户及角色 介绍
OpenStack centos版安装(三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服