`

Struts2 OptionTransferSelect标签使用

    博客分类:
  • java
阅读更多

转自 出家如初,成佛有余

有时候需要在两个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"

<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.
 
分享到:
评论

相关推荐

    struts2 optiontransferselect标签的用法

    struts2 optiontransferselect标签,其中包含一个jsp页面,可以将此jsp页面放入您的项目中,即可看到效果!

    struts2 optiontransferselect标签使用中的问题

    在Struts2中,OptionTransferSelect标签通常与标签配合使用,后者创建一个下拉列表,而前者则提供了双向选择的功能。以下是一些关于这个标签的重要知识点: 1. **标签语法**: OptionTransferSelect标签的基本用法...

    struts2 标签 s:optiontransferselect左右下拉列表的使用。

    在Struts2中,`s:optiontransferselect`是一个特殊的标签,用于创建具有双向选择功能的下拉列表,即“左列表”和“右列表”,用户可以在这两个列表之间转移选项,常用于多选场景。 **1. `s:optiontransferselect` ...

    Struts2 UI标签代码示例

    本篇文章将深入探讨Struts2 UI标签中的几个关键组件:tabbedPanel、autocompleter、tree和treenode以及optiontransferselect,这些标签在实际项目中有着广泛的应用。 首先,`tabbedPanel`标签是用于创建多选项卡的...

    Struts2标签列表及说明

    Struts2 标签列表及说明 Struts2 是一个基于 Java 语言的 Web 应用程序 Framework,它提供了许多标签来帮助开发者快速构建 Web 应用程序。下面是 Struts2 的标签列表及说明: A: * &lt;s:a&gt;:超链接,类似于 HTML ...

    struts2_标签使用方法.doc

    在Struts2中,不再像Struts1.x那样将标签库分为html、bean、logic和tiles等类别,而是统一使用一个`&lt;s&gt;`前缀的标签库,只需在JSP页面头部引入`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`即可使用所有标签。...

    struts2标签大全

    在JSP中,我们通常使用`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`来引入Struts2的标签库。下面将详细介绍一些重要的Struts2标签及其功能。 **A. 超链接和Action标签** - `&lt;s:a href=""&gt;&lt;/s:a&gt;`:创建一个...

    struts2 标签库 帮助文档

    optiontransferselect标签:创建两个选项以及转移下拉列表项,该标签生成两个下拉列表框,同时生成相应的按钮,这些按钮可以控制选项在两个下拉列表之间移动、排序。 radio标签:单选框。 optgroup标签:生成一个...

    Struts_2_标签库(文档手册)_Tags-API-CLSW-JSP

    标题和描述中提到的知识点是关于Struts 2框架中的标签库使用,特别是与JSP相关的部分。Struts 2框架是一种基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于构建动态、可扩展的Web应用。其标签...

    Struts2标签详解及具体实例解析

    ### Struts2标签详解及具体实例解析 #### 一、概述 Struts2是一个基于MVC模式的开源框架,它提供了丰富的标签库来简化Web应用的开发过程。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态网页。...

    struts2-s标签

    ### Struts2 S 标签库详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建健壮的 Web 应用程序。其中,Struts2 的标签库是其核心特性之一,为开发者提供了丰富的 ...

    Jsp struts2标签大全

    本文将详细介绍部分Struts2标签的功能及其使用方法。 #### 二、标签概述 ##### 1. **a 标签** - **功能描述**:创建一个HTML超链接,类似于HTML中的 `&lt;a href=""&gt;` 标签。 - **示例代码**: ```jsp 登录 ``` ...

    struts2常用标签

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2中一些常用标签的详细说明: 1. `&lt;s:a&gt;`:这是一个超链接标签,用于创建HTML的`&lt;a&gt;`标签。通过指定`...

    struts2标签介绍

    在Struts2中,所有的标签都统一在`&lt;s&gt;`前缀下,通过引入`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`就可以在页面上使用这些标签。 **A组标签:** 1. `&lt;s:a&gt;` - 用于创建超链接,与HTML的`&lt;a&gt;`标签类似,可以...

    Struts2常用标签

    ### Struts2常用标签详解 #### 一、概述 Struts2框架作为一款成熟的Web应用开发框架,在Java Web开发领域有着广泛的应用。Struts2框架提供了丰富的标签库,这些标签可以极大地方便开发者进行Web页面的开发工作。...

    struts2标签学习

    Struts2标签是Java开发中基于Struts2框架的一个重要组成部分,它提供了丰富的标签库,使得在JSP页面中处理业务逻辑和展示数据变得更加简洁和高效。与Struts1的标签库相比,Struts2的标签更加灵活且功能更加强大。 ...

    struts2.0 taglib 标签库

    Struts2.0 Taglib标签库是Struts2框架中的核心组成部分,它提供了一组丰富的JSP标签,...在使用Struts2开发时,只需在JSP页面中引入Struts2的Taglib,即可使用这些标签来构建用户界面,从而实现与后台Action的交互。

    struts2的s标签

    要在JSP页面中使用Struts2的S标签,首先需要在页面顶部添加如下声明: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` 这行代码的作用是将Struts2提供的标签库导入到当前JSP页面中,并指定前缀为“s”。...

    struts2标签大全详解

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2标签的详细解释: A部分: 1. `&lt;s:a&gt;`:创建一个链接,与HTML的`&lt;a&gt;`标签相似,允许传递参数。 2. `...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_5_标签 共113页.pptx

    为了在JSP页面中使用Struts2提供的标签,首先需要在JSP页面中声明标签库的引入,通常的引入方式如下: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` #### 四、Struts2标签语法 Struts2标签的语法基本上...

Global site tag (gtag.js) - Google Analytics