`
weii
  • 浏览: 101336 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

struts2的select标签使用例子

阅读更多

在一个ssh项目里,我使用到了strut2标签,因为不熟练,遇到一系列问题,下面整理出来,与大家共享。

 

要求是这样:在前台页面上要用select下拉框,下拉框的内容是从后台程序读出来的。

 

1.首先,来看看前台页面baseinfo.jsp:

<%@ page contentType="text/html; charset=GB2312"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title><s:text name="index"/></title>
	</head>
	<body>
	<br>
		<table width="768" border="0" align="center" cellpadding="0" cellspacing="0">
			<tr>
				<td>		
					<s:form action="baseinfoProcess.action">
						<s:select name="nationality" key="label_nationality" list="nations" listKey="id" listValue="nation"/>
					</s:form>	
				</td>
			</tr>
		</table>
	</body>
</html>

2.建立下拉框内容的对象的类,Nation.java:

package auth.model;

/**
 * 
 * @author weiqi
 * @version 0.1 2009-02-25
 */

public class Nation implements java.io.Serializable {

	// Fields

	private Integer id;

	private String nation;
	
	/** default constructor */
	public Nation() {
	}

	/** full constructor */
	public Nation(Integer id, String nation) {
		this.id = id;
		this.nation = nation;
	}
	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNation() {
		return this.nation;
	}

	public void setNation(String nation) {
		this.nation = nation;
	}
}

  3.action类:TestAction.java

package auth.action;

import java.util.*;
import com.opensymphony.xwork2.ActionSupport;
import auth.model.Nation;


/**
 * 
 * @author weiqi
 * @version 0.1 2009-02-25
 */
public class TestAction extends ActionSupport {
	
	private List nations ;

	public String execute() throws Exception {
		List nations =new ArrayList<Nation>();
		
		Nation hz = new Nation(1,"汉族");
		Nation tjz = new Nation(2,"土家族");
		Nation huiz = new Nation(3,"回族");

		nations.add(hz);   
		nations.add(tjz); 
		nations.add(huiz);   
		
		setNations(nations);

		return "success";
	}

	public void setNations(List nations) {
		this.nations = nations;
	}
	public List getNations() {
		return nations;
	}
}

4.再来看看struts.xml的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

	
    <package name="weiqi" extends="struts-default">

        <action name="test" class="auth.action.TestAction">
            <result name="success">/WEB-INF/jsp/baseinfo.jsp</result>
            <result name="failure">/WEB-INF/jsp/error.jsp</result>
        </action>
       
    </package>
</struts>

 应该没错了,运行,测试一下,结果报错了:

2009-02-27 00:18:54  [ http-8080-Processor25:76531 ] - [ ERROR ]  Servlet.service() for servlet jsp threw exception
 tag 'select', field 'list', name 'nationality': The requested list key 'nations' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
	at org.apache.struts2.components.Component.fieldError(Component.java:231)
	at org.apache.struts2.components.Component.findValue(Component.java:293)
	at org.apache.struts2.components.ListUIBean.evaluateExtraParams(ListUIBean.java:79)
	at org.apache.struts2.components.Select.evaluateExtraParams(Select.java:99)
	at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:780)
	at org.apache.struts2.components.UIBean.end(UIBean.java:481)

报错的意思是nations不能转换成/array/map/enumeration/iterator等类型。

 

仔细查了查,select标签的说明:

 

---------------------------------------------------------------------------------------------------------------------------

struts2的select标签中,常用的有以下几个属性:
(1)struts2中的select 标签中,必须设置的属性只有一个,即是list。
(2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了
其中,即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1
(3)list属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map,那么map的key就对应于select标签中的value,map中的value就对应于select标签中的option。而如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。
(4)listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option。
(5)name属性:即是表单中select的名称。  

---------------------------------------------------------------------------------------------------------------------------

我的写法没有问题啊。

 

后来,我把重点放在了TestAction.java的身上,做了如下改动:

package auth.action;

import java.util.*;
import com.opensymphony.xwork2.ActionSupport;
import auth.model.Nation;


/**
 * 
 * @author weiqi
 * @version 0.1 2009-02-25
 */
public class TestAction extends ActionSupport {
	
	private List<Nation> nations ;

	public String execute() throws Exception {
		List<Nation> nations =new ArrayList<Nation>();
		
		Nation hz = new Nation(1,"汉族");
		Nation tjz = new Nation(2,"土家族");
		Nation huiz = new Nation(3,"回族");

		nations.add(hz);   
		nations.add(tjz); 
		nations.add(huiz);   
		
		setNations(nations);

		return "success";
	}

	public void setNations(List<Nation> nations) {
		this.nations = nations;
	}
	public List<Nation> getNations() {
		return nations;
	}
}

 再次运行,成功。^_^

希望对大家有帮助。

 

分享到:
评论
3 楼 vinplezhang 2014-06-11  
出现问题的原因 是struts的select标签  的list属性必须要有值
2 楼 dcriori 2009-11-08  
list必须被初始化,可以用ArrayList去初始化,这样就不会报错了。
1 楼 leyugar 2009-05-11  
还是不行~~~ 

相关推荐

    struts2标签使用例子

    在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。

    struts2标签库例子

    下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来控制页面的执行过程,并从 Action 或值堆栈中取得数据。这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,...

    struts操作select标签实例

    在Struts中,`html:select`标签是用于创建HTML下拉列表的一个重要元素,特别适用于用户界面中需要选择单一或多个选项的场景。本文将深入探讨`html:select`标签的使用方法及其相关知识点。 首先,我们需要理解`...

    struts2实现页面select标签默认选中

    在Struts2框架中,实现页面`&lt;select&gt;`标签默认选中的功能是非常实用且常见的需求。这不仅可以提高用户体验,还能让界面看起来更加专业。本文将详细介绍如何通过Struts2的相关标签来实现这一功能。 ### Struts2框架...

    struts2标签中select的三种写法

    在本文中,我们将深入探讨Struts2中`select`标签的三种不同的使用方法,以及如何从Action类动态获取数据填充这些选项。 ### 一、静态定义`select`标签 1. **静态数据**:在简单的场景下,我们可以直接在JSP页面中...

    struts2 select标签通过hibernate读后台数据,使select选项为后台数据

    以下是一个简单的示例,展示了如何在Struts2中使用`select`标签与Hibernate配合: ```java // Action类 public class MyAction extends ActionSupport { private List&lt;MyEntity&gt; options; // getter和setter省略 ...

    Struts2表单标签使用范例

    本示例将深入探讨Struts2的表单标签使用方法,帮助开发者更好地理解和应用这些标签。 首先,我们来了解一些基本概念。在Struts2中,表单标签通常与Action类中的属性相对应,用于在JSP页面上创建HTML表单元素。例如...

    struts2标签库及国际化的使用例子

    Struts2 标签库及国际化的使用案例 Struts2 框架提供了强大的标签库和国际化功能,本实验旨在掌握 Struts 2 标签库和国际化功能的使用,并实现用户注册页面的国际化显示。 一、Struts2 标签库 Struts2 框架提供了...

    Struts2_表单标签简介 示例

    本文将详细介绍Struts2中的表单标签及其使用方法。 #### 二、Struts2表单标签概述 Struts2中的表单标签主要分为基础表单标签和高级表单标签两大类。基础表单标签涵盖了如单选框、复选框、下拉列表等基本元素;而...

    jsp中struts2.0标签应用示例

    "jsp中struts2.0标签应用示例"这个主题主要关注如何在JSP页面中利用Struts2.0提供的标签进行视图层的构建,通过实际例子展示了`&lt;s:form&gt;`、`&lt;s:textfield&gt;`、`&lt;s:password&gt;`、`&lt;s:select&gt;`等常用标签的使用,...

    struts2标签的使用代码

    Struts2的UI标签提供了一整套丰富的界面组件,如文本框`&lt;s:textfield&gt;`、下拉框`&lt;s:select&gt;`、复选框`&lt;s:checkbox&gt;`等。这些标签使得表单的创建更加简单,且易于与Action进行数据绑定。 5. 日期和树节点标签 对于...

    struts2-tags-API,struts2标签api

    Struts2的标签API文档详细列出了每个标签的用法、属性、示例以及它们如何与Action上下文交互。通过阅读API,开发者可以了解每个标签的完整功能,包括标签的初始化、属性设置、事件处理等。 四、Struts2标签与OGNL ...

    struts2的标签例子

    本篇文章将深入探讨“struts2的标签例子”,特别是关于Ajax的标签使用,以及如何实现级联下拉列表的功能。 首先,我们要理解Struts2的标签库。Struts2的标签库主要分为核心标签库(struts-tags)和展示标签库...

    struts2 UI标签

    Struts2_3800_Tag这个压缩包文件可能包含了Struts2 UI标签的相关源码、文档或示例,可以帮助开发者深入理解这些标签的工作原理,以及如何在项目中有效利用它们。通过学习和实践,开发者可以更好地掌握Struts2框架,...

    struts2 标签 tags API 参考文档

    参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...

    struts2标签教程(中文版)

    在实际开发中,Struts2标签可以与OGNL(Object-Graph Navigation Language)表达式一起使用,实现动态数据绑定和复杂的逻辑判断。例如,`s:if`标签可以这样使用: ```jsp 欢迎管理员! 欢迎普通用户! ``` ...

    struts2.0标签使用

    给出的示例代码主要展示了如何使用`&lt;html:select&gt;`标签来创建一个下拉列表,并利用`&lt;c:forEach&gt;`标签遍历数据集以填充下拉列表选项。这里涉及到了多个标签的组合使用,下面我们逐一解析: #### `&lt;html:select&gt;`标签...

    struts2标签详解与实例

    这个例子展示了如何使用Struts2的`&lt;s:form&gt;`、`&lt;s:textfield&gt;`、`&lt;s:password&gt;`、`&lt;s:email&gt;`和`&lt;s:fielderror&gt;`标签创建一个包含用户输入验证的注册表单。 五、源码与工具 理解Struts2标签的实现原理,可以查看其...

    Java struts2 ongl 标签 jsp页面

    例如,在提供的代码片段中,可以看到`&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;`引入了Struts2的标签库,这使得在JSP中可以方便地使用OGNL表达式来操作页面上的Java对象。 ```jsp ("sex", Sex.MALE); %&gt; This ...

    Struts2 API 以及标签手册

    4. **ValueStack**: Struts2使用ValueStack来存储模型对象,这些对象可以被视图层访问,以展示数据。ActionContext提供了对当前请求上下文的访问,包括ValueStack、Parameters等。 5. **OGNL(Object-Graph ...

Global site tag (gtag.js) - Google Analytics