`
LynsaHuang
  • 浏览: 47162 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

s:doubleselect使用出现问题总结

阅读更多
最近使用s:doubleselect,关联省和地市,出现了跟大家一样的问题,地市显示不出来,ie提示:XXXTemp为空或不是对象。
经反复测试查找,发现问题出现的原因如下:出现其中的一项都可能导致这个问题。
一:doubleName="userId.cityNo",这样定义是想取的是类中的一个变量,不能这样使用,不能有‘.’出现,必须是cityNo才可以。
二:doubleList="cityList",cityList必须在public class myclass extends ActionSupport类中定义,不能单独定义出来,也不能在另外的一个类中定义。

我使用的是struts2构建的。

下面是我的代码:
java类:

package tutorial;

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Validateable;
import com.opensymphony.xwork2.util.OgnlValueStack;

import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.File;

public class UITagExample extends ActionSupport implements Validateable {
List vehicalTypeList = new ArrayList();
    Map vehicalSpecificMap = new HashMap();
public UITagExample() {
       
        VehicalType car = new VehicalType("CarKey", "Car");
        VehicalType motorcycle = new VehicalType("MotorcycleKey", "Motorcycle");
        VehicalType annimal = new VehicalType("annimalKey", "annimal");
        vehicalTypeList.add(car);
        vehicalTypeList.add(motorcycle);
        vehicalTypeList.add(annimal);
       
        List cars = new ArrayList();
        cars.add(new VehicalSpecific("MercedesKey", "Mercedes"));
        cars.add(new VehicalSpecific("HondaKey", "Honda"));
        cars.add(new VehicalSpecific("FordKey", "Ford"));
       
        List motorcycles = new ArrayList();
        motorcycles.add(new VehicalSpecific("SuzukiKey", "Suzuki"));
        motorcycles.add(new VehicalSpecific("YamahaKey", "Yamaha"));
       
        List annimals = new ArrayList();
        annimals.add(new VehicalSpecific("a1Key", "a1"));
        annimals.add(new VehicalSpecific("a2Key", "a2"));
       
        vehicalSpecificMap.put(car, cars);
        vehicalSpecificMap.put(motorcycle, motorcycles);
        vehicalSpecificMap.put(annimal, annimals);
    }  
public List getVehicalTypeList() {
        return vehicalTypeList;
    }
   
    public List getVehicalSpecificList() {
        OgnlValueStack stack = (OgnlValueStack) ServletActionContext.getValueStack(ServletActionContext.getRequest());
        Object vehicalType = stack.findValue("top");
        if (vehicalType != null ){
        if( vehicalType instanceof VehicalType) {
            List l = (List) vehicalSpecificMap.get(vehicalType);
            return l;
        }        }

        return Collections.EMPTY_LIST;
    }
public List getVehicalTypeList() {
        return vehicalTypeList;
    }
   
    public List getVehicalSpecificList() {
        OgnlValueStack stack = (OgnlValueStack) ServletActionContext.getValueStack(ServletActionContext.getRequest());
        Object vehicalType = stack.findValue("top");
        if (vehicalType != null ){
        if( vehicalType instanceof VehicalType) {
            List l = (List) vehicalSpecificMap.get(vehicalType);

            return l;
        }

        }

        return Collections.EMPTY_LIST;
    }
public static class VehicalType {
        String key;
        String description;
        public VehicalType(String key, String description) {
            this.key = key;
            this.description = description;
        }
       
        public String getKey() { return this.key; }
        public String getDescription() { return this.description; }
       
        public boolean equals(Object obj) {
            if (! (obj instanceof VehicalType)) {
                return false;
            }
            else {
                return key.equals(((VehicalType)obj).getKey());
            }
        }
       
        public int hashCode() {
            return key.hashCode();
        }
    }   
   
    public static class VehicalSpecific {
        String key;
        String description;
        public VehicalSpecific(String key, String description) {
            this.key = key;
            this.description = description;
        }
       
        public String getKey() { return this.key; }
        public String getDescription() { return this.description; }
       
        public boolean equals(Object obj) {
            if (! (obj instanceof VehicalSpecific)) {
                return false;
            }
            else {
                return key.equals(((VehicalSpecific)obj).getKey());
            }
        }
       
        public int hashCode() {
            return key.hashCode();
        }
    }
}

jsp代码:
文件uiTagExample.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>UI Tags Example</title>
    <s:head/>
</head>
<body>

<s:actionerror/>
<s:actionmessage/>
<s:fielderror />

<s:form name="test" id="test1"action="example" method="post" enctype="multipart/form-data" tooltipConfig="#{'jsTooltipEnabled':'true'}">
<s:doubleselect
            tooltip="Choose your Vehical"
            label="Favourite Vehical"
            name="favouriteVehicalType"
            list="vehicalTypeList"
            listKey="key"
            listValue="description"
            value="'MotorcycleKey'"
            doubleValue="'YamahaKey'"
            doubleList="vehicalSpecificList"
            doubleListKey="key"
            doubleListValue="description"
            doubleName="favouriteVehicalSpecific" headerKey="-1"
            headerValue="---------- Please Select ----------"
            emptyOption="true" />
</s:form>
   
</body>
</html>

文件index.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Hello</title>
        <s:head />  
       
    </head>
    <body>
        <h2 >s:doubleselect</h2 >
<s:form action="uiTagExample">
            Name: <s:textfield name="name" />

            <s:submit />
        </s:form>   

    </body>
</html>


struts.xml文件中加入
<package name="tutorial" extends="struts-default">
        <action name="uiTagExample" class="tutorial.UITagExample">
    <result>uiTagexample.jsp</result>
    <result name="input">uiTagexample.jsp</result>
</action>
    </package>
0
0
分享到:
评论

相关推荐

    j2ee-struts2-Select_DoubleSelect.rar_struts2 doubleselect

    总结起来,Struts2的`s:select`和`s:doubleselect`标签为开发者提供了便捷的方式来创建和管理下拉列表,特别是`s:doubleselect`对于处理一对多关联关系的场景非常实用。通过合理利用这些标签,可以提高代码的可读性...

    doubleselect.doc

    本文将详细介绍如何使用Struts2中的`&lt;s:doubleselect&gt;`标签来实现省市联动功能,并通过一个具体的业务场景来进行说明。 #### 二、业务场景分析 在代理商管理系统中,当新增代理商时需要选择其所属的省市。随后,当...

    Strus 2的新表单标志的使用

    本文详细介绍了Struts 2中 `&lt;s:checkboxlist/&gt;` 和 `&lt;s:doubleselect/&gt;` 这两个表单标签的使用技巧及常见问题的解决方案。通过这些技巧,开发者能够更加高效地利用这些标签来构建用户界面。未来,我们还将继续探索更...

    struts2中doubleselect标签的应用

    在本篇文章中,我们将深入探讨Struts2框架中的`doubleselect`标签的使用方法,并结合一个具体的示例来展示如何将此标签与Hibernate和Spring框架整合在一起,以便于更好地理解和运用这一技术。 ### Struts2框架简介 ...

    struts2中的doubleSelect标签的用法(从数据库中读取数据,HSS)

    具体来说,需要实现`findSort_`方法,该方法用于从数据库中查询数据,并将其封装成适合`doubleSelect`使用的格式。 ```java public String findSort_(){ try{ pslist = service.findSortOne(); List...

    struts2标签大全

    &lt;s:doubleselect list="countries" doubleName="selectedCountry" doubleList="cities" /&gt; ``` - **参数说明**: - `list`:指定第一个下拉框的数据源列表。 - `doubleName`:指定第一个下拉框的选择项。 - `...

    下面就介绍下Struts2每个标签的用法(有错请指正):

    &lt;s:doubleselect doubleName="selectedOptions" doubleList="allOptions" /&gt; ``` ##### 17. `&lt;s:if&gt;`、`&lt;s:elseif&gt;`、`&lt;s:else&gt;` 标签 - **用途**:用于条件判断。 - **示例**: ```xml &lt;s:if test="%{isLogged...

    Struts2标签 UI标志又可以分为表单UI和非表单UI两部分

    新增了一些常用的控件,比如日期选择器(datepicker)、双选框(doubleselect)、时间选择器(timepicker)和选项转移选择器(optiontransferselect)等,极大地丰富了表单控件的选择。 1. **Form标签** - `&lt;s:form&gt;` ...

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

    8. **`&lt;s:doubleselect&gt;`**:用于生成一对双列表框,支持多选。 9. **`&lt;s:combobox&gt;`**:生成组合框。 10. **`&lt;s:optiontransferselect&gt;`**:生成可移动选项的下拉列表。 11. **`&lt;s:optgroup&gt;`**:用于组织多个`&lt;s:...

    struts2.0标签库简介

    `&lt;s:combobox&gt;` 和 `&lt;s:doubleselect&gt;` - 创建下拉列表和双列选择框,增强用户交互。 #### 9. `&lt;s:component&gt;` - 组件标签 - 用于创建自定义组件,提高代码复用性。 #### 10. `&lt;s:date&gt;` 和 `&lt;s:datetimepicker...

    JSP_struts2标签大全

    &lt;s:doubleselect name="permissions" list="#{permissions}" listKey="key" listValue="value"/&gt; ``` #### 三、总结 Struts2标签库的强大之处在于它提供了丰富多样的标签,可以满足Web应用开发中的各种需求。从...

    JSP_struts2标签大全.doc

    &lt;s:doubleselect name="selectedItems" list="{'item1','item2','item3'}" headerKey="" headerValue="Select Items" /&gt; ``` - **说明**: 生成一个双列表格,允许用户从一个列表中选择项目到另一个列表。 15. **...

    Jsp struts2标签大全

    &lt;s:doubleselect name="selectedItems" list="itemList" headerKey="" headerValue="--请选择--"/&gt; ``` ##### 16. **else 标签** - **功能描述**:在条件语句中使用,当条件不满足时执行的内容。 - **示例代码**...

    Struts2的总结和Strut2集成Spring

    Struts2提供了一些新的表单标签,如`&lt;s:checkboxlist/&gt;`, `&lt;s:doubleselect/&gt;`和`&lt;s:token/&gt;`,它们分别用于生成复选框列表、双重选择列表和防止跨站请求伪造的令牌。 #### 结论 Struts2与Spring的集成不仅增强了...

    ssh 框架技术

    - **Property-Driven**:使用现有的Action对象,通过属性来区分不同的请求。 ##### 12. 配置文件详解 - **指定web应用默认字符集**:通过设置struts.i18n.encoding参数来指定。 - **开发模式**:使用struts....

Global site tag (gtag.js) - Google Analytics