`
weii
  • 浏览: 100723 次
  • 性别: 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标签库

    &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; 结合例子,重点掌握以下标签的用法 (1) (2) (3) &lt;s:if&gt; 、、 (4) (5) (6) 、 (7) 、、、 (8) &lt;s:select&gt;、、&lt;s:checkboxlist&gt;

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts2标签实例(s:textfield、s:select) + spring

    这个是自己试验的实例,不多,只有s:textfield和s:select。里面有注释,页面、xml和action里的注释序号都是相互对应的。jar都在,直接去掉注释就可以运行。我用的开发环境是jdk5和myeclipes5

    Struts2标签库的所有

    &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; 结合例子,重点掌握以下标签的用法 (1) (2) (3) &lt;s:if&gt; 、、 (4) (5) (6) 、 (7) 、、、 (8) &lt;s:select&gt;、、&lt;s:checkboxlist&gt;

    jsp 开发之struts2中s:select标签的使用

    jsp 开发之struts2中s:select标签的使用 1.第一个例子: &lt;s list={ theme=simple headerKey=00 headerValue=00&gt;&lt;/s&gt; 2.第二个例子: 3.第三个例子 &lt;s:select theme=simple name

    struts2.1宝典

    8.Select标签 7 9.Checkbox 10 10.checkboxlist 12 11.combobox 14 12.datepicker 17 9.总结 21 10.国际化资源文件占位符 为资源文件传参数 22 没有JUNIT 22 OGNL 22 技巧一 30 Action类及Action Name的命名规范 ...

    struts 标签 logic:iterate使用 logic:iterate

    我就是靠这个文档实现logic:iterate的循环的 struts 标签 logic:iterate使用 logic:iterate &lt;br&gt;第一页 是struts官方的说明, 第二页 是个例子 第三页 是我实现的arrayList放入标签的方法。 这是页面...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    5.13 select标签 76 5.14 用optgroup标签对选项进行分组 79 5.15 checkboxlist标签 82 5.16 combobox标签 83 5.17 updownselect标签 85 5.18 optiontransferselect标签 87 5.19 doubleselect标签 90 5.20 主题 92 ...

    jquery动态生成树

    使用struts2,jquery,jquery插件treeview以及json动态生成一棵目录树,下载后可以直接运行,供学习使用

    Spring中文帮助文档

    select标签 13.9.10. option标签 13.9.11. options标签 13.9.12. textarea标签 13.9.13. hidden标签 13.9.14. errors标签 13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1....

    Spring API

    select标签 13.9.10. option标签 13.9.11. options标签 13.9.12. textarea标签 13.9.13. hidden标签 13.9.14. errors标签 13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1....

    spring chm文档

    select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. hidden标签 13.9.12. errors标签 13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对...

    Spring-Reference_zh_CN(Spring中文参考手册)

    select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. hidden标签 13.9.12. errors标签 13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的...

    Spring 2.0 开发参考手册

    select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. hidden标签 13.9.12. errors标签 13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    iBATIS实战

    4.2 使用select已映射语句 70 4.2.1 使用内联参数(用#做占位符) 70 4.2.2 使用内联参数(用$做占位符) 71 4.2.3 SQL注入简介 72 4.2.4 自动结果映射 73 4.2.5 联结相关数据 74 4.3 映射参数 75 4.3.1 外部参数映射 75...

    ARCH4系统开发指南

    2.28.2 Struts2校验框架应用 71 2.28.2.1 校验配置文件 71 2.28.2.2 角色Insert页面示例 71 2.28.2.3 用户Query页面示例 73 2.28.2.4 多行输入域校验 75 2.29 多语言管理 77 2.29.1 定义输入域的name属性和资源文件 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

     国内知名的高端IT技术作家,已出版《Spring 2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。 目录: 第0章 学习Java...

Global site tag (gtag.js) - Google Analytics