struts2如何实现select标签和doubleselect标签
1. select标签有三种实现的形式:
(1)直接写在jsp页面里的list, map, array等结构
<s:select list="{'山东','山西','河南','河北'}" label="籍贯" />
(2)通过声明bean实体的方法调用对象中list, map, array等结构
struts2.values.Province
public class Province {
private int pid;
private String pname;
public Province(int pid, String pname) {
this.pid = pid;
this.pname = pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPname() {
return pname;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPid() {
return pid;
}
public String toString() {
return new ToStringBuilder(this).append("pid", this.pid).append(
"pname", this.pname).toString();
}
}
struts2.values.Provinces.java
public class Provinces {
private List<Province> l;
private Map<Integer,Province> m;
public Provinces() {
l = new ArrayList<Province>();
l.add(new Province(1,"山东省"));
l.add(new Province(2,"山西省"));
l.add(new Province(3,"河北省"));
l.add(new Province(4,"河南省"));
m = new HashMap<Integer,Province>();
m.put(1, new Province(1,"山东省"));
m.put(2, new Province(1,"山西省"));
m.put(3, new Province(3,"河北省"));
m.put(4, new Province(4,"河南省"));
}
public List<Province> getL() {
return l;
}
public void setL(List<Province> l) {
this.l = l;
}
public Map<Integer, Province> getM() {
return m;
}
public void setM(Map<Integer, Province> m) {
this.m = m;
}
}
<s:bean name="struts2.values.Provinces" id="p" />
<s:select list="%{#p.l}" listValue="pname" listKey="pid" label="籍贯"></s:select>
(3). 保存在action类中的List, Map
注意一定是放在此action跳转到的页面中, 否则action不初始化也就没法产生List, Map
<s:form action="login" method="post">
<s:bean name="struts2.values.Provinces" id="p"></s:bean>
<s:select list="provinces" listValue="pname" listKey="pid" label="籍贯"></s:select>
2.doubleselect标签
struts2.LoginAction.java
public class LoginAction extends ActionSupport {
private List<Province> provinces;
private Map<Integer, List<City>> country;
private String name;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
provinces = new ArrayList<Province>();
provinces.add(new Province(1,"山东省"));
provinces.add(new Province(2,"山西省"));
provinces.add(new Province(3,"河北省"));
provinces.add(new Province(4,"河南省"));
List<City> sdProvince = new ArrayList<City>();
sdProvince.add(new City(1,1,"济南"));
sdProvince.add(new City(2,1,"青岛"));
sdProvince.add(new City(3,1,"XX"));
sdProvince.add(new City(4,1,"XX"));
List<City> sxProvince = new ArrayList<City>();
sxProvince.add(new City(5,2,"太原"));
sxProvince.add(new City(6,2,"大同"));
sxProvince.add(new City(7,2,"XX"));
sxProvince.add(new City(8,2,"XX"));
List<City> hbProvince = new ArrayList<City>();
hbProvince.add(new City(9,3,"石家庄"));
hbProvince.add(new City(10,3,"承德"));
hbProvince.add(new City(11,3,"XX"));
hbProvince.add(new City(12,3,"XX"));
List<City> hnProvince = new ArrayList<City>();
hnProvince.add(new City(13,4,"郑州"));
hnProvince.add(new City(14,4,"洛阳"));
hnProvince.add(new City(15,4,"XX"));
hnProvince.add(new City(16,4,"XX"));
country = new HashMap<Integer, List<City>>();
country.put(1, sdProvince);
country.put(2, sxProvince);
country.put(3, hbProvince);
country.put(4, hnProvince);
return SUCCESS;
}
public List<Province> getProvinces() {
return provinces;
}
public void setProvinces(List<Province> provinces) {
this.provinces = provinces;
}
public Map<Integer, List<City>> getCountry() {
return country;
}
public void setCountry(Map<Integer, List<City>> country) {
this.country = country;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
网页中
<s:form action="login" method="post">
<s:doubleselect list="provinces" listKey="pid" listValue="pname"
doubleList="country[top.pid]" doubleListKey="pid"
doubleListValue="cname"doubleName="cname"></s:doubleselect>
</s:form>
这是最常见的一种报错, 如果你不幸遇到了这个错误且仔细查看代码均没有问题时, 请注意下面两个问题
org.apache.jasper.JasperException: tag 'select', field 'list': The requested list key 'p.l' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name}
1.你的List, Map等结构是放在哪里的, 如果是放在action类中的, 你的网页有没有调用到这个action, 如果没有就直接使用其中的List, Map. 就会报错, 请把你要显示select或者是doubleselect的网页设置成action的跳转页并按照跳转来查看.
2.你的标签中可能存在没有填写的赋值, 如name, listKey, listValue等
相关推荐
在Struts2中,我们有许多内置的标签来帮助开发者更方便地处理表单元素,例如`<s:select>`和`<s:doubleselect>`就是其中两个用于创建下拉列表的标签。下面我们将详细探讨这两个标签以及如何在J2EE项目中使用它们。 1...
Doubleselect是Struts2提供的一种实现级联选择的组件,允许用户在一个下拉框的选择影响另一个下拉框的选项。 在Struts2级联doubleselect的实现中,主要涉及以下几个关键知识点: 1. **Action类**:Action类是业务...
"Struts2-Double-Select-Example"这个项目是Struts2框架的一个实例,用于演示如何在Web表单中实现双层选择框功能,这在处理复杂数据关联和用户选择时非常有用。 首先,我们需要了解Struts2框架的核心组件和工作原理...
Struts2 标签列表及说明 Struts2 是一个基于 Java 语言的 Web 应用程序 Framework,它提供了许多标签来帮助开发者快速构建 Web 应用程序。下面是 Struts2 的标签列表及说明: A: * <s:a>:超链接,类似于 HTML ...
实现标签页面板,可以动态加载内容,提高用户界面的组织性和交互性。 #### `<s:table>` 标签 用于生成表格,支持数据绑定和列的定制。 #### `<s:text>` 标签 输出国际化的文本,可以加载资源文件中的消息。 ...
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
### Struts2标签详解及具体实例解析 #### 一、概述 Struts2是一个基于MVC模式的开源框架,它提供了丰富的标签库来简化Web应用的开发过程。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态网页。...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,简化了JSP页面的编写,提高了开发效率。在Struts2中,所有的标签都统一在`<s>`前缀下,通过引入`<%@ taglib prefix="s" uri="/struts-tags" %>`就可以在页面上...
除了表单相关的标签外,Struts2还提供了一些非表单标签,用于实现更复杂的功能,例如: 1. **`<s:property>`**:用于输出值栈中的值。 2. **`<s:i18n>`**:支持国际化。 3. **`<s:iterator>`**:用于迭代集合或数组...
Struts2标签是Java开发中基于Struts2框架的一个重要组成部分,它提供了丰富的标签库,使得在JSP页面中处理业务逻辑和展示数据变得更加简洁和高效。与Struts1的标签库相比,Struts2的标签更加灵活且功能更加强大。 ...
### JSP Struts2 标签详解 #### 一、简介 Struts2是一个流行的Java Web框架,提供了丰富的标签库来简化开发流程。这些标签不仅能够帮助开发者减少代码量,提高开发效率,还具备强大的功能性和灵活性。本文将详细...
Struts2提供了丰富的标签库(Tag Library),使得开发人员能够更方便地在JSP页面上进行动态内容展示和数据绑定等操作。 #### 二、标签库介绍 Struts2的标签库主要包括表单标签、条件判断标签、循环标签、国际化标签...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2中一些常用标签的详细说明: 1. `<s:a>`:这是一个超链接标签,用于创建HTML的`<a>`标签。通过指定`...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加...这些标签极大地简化了Struts2应用中的视图层开发,提高了代码的可读性和维护性。通过熟练掌握这些标签,开发者能更高效地构建动态Web应用。
Struts2中的UI标签为开发者提供了强大的工具来构建用户界面,不仅涵盖了常见的表单控件,还支持复杂的条件判断和循环迭代逻辑。通过本文的介绍,读者应该能够理解并掌握Struts2 UI标签的基本用法及其应用场景。在...
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素...
### Struts2标签大全 Struts2框架是Java Web开发中的一个重要组成部分,它极大地简化了Web应用程序的开发过程。在Struts2中,标签库(Tag Library)扮演着非常重要的角色,它们为开发者提供了丰富的功能,帮助快速...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
Struts2.0是Struts框架的一个重大升级版本,它提供了更为强大且灵活的MVC架构...以上仅是Struts2.0标签库中的一部分,掌握这些标签将极大地提升开发者使用Struts2框架的能力,使Web应用程序的开发变得更加高效和优雅。