struct2页面初始化.doc

上传人:博****1 文档编号:549292204 上传时间:2023-05-10 格式:DOC 页数:5 大小:48.51KB
返回 下载 相关 举报
struct2页面初始化.doc_第1页
第1页 / 共5页
struct2页面初始化.doc_第2页
第2页 / 共5页
struct2页面初始化.doc_第3页
第3页 / 共5页
struct2页面初始化.doc_第4页
第4页 / 共5页
struct2页面初始化.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《struct2页面初始化.doc》由会员分享,可在线阅读,更多相关《struct2页面初始化.doc(5页珍藏版)》请在金锄头文库上搜索。

1、主题:关于struts中初始化页面问题的解决方案创建人:王艺创建时间:2003年6月8日星期日问题描述:在开发的过程中有时会需要从数据库中读取数据,然后将这些数据显示到页面上作为某些下拉列表的列表内容。1. 在较早的应用中是通过在jsp中添加连接数据库并读取数据的方式来实现初始页面的。2. 在struts中如果我们不用标签,可以在action中连带(之所以称其为连带查询是因为一般我们使用action的目的并不仅仅是为了初始化页面。比如:我们需要根据用户id号查询这个用户的详细信息并显示给用户这时我们的目的是查询用户详细信息,但是,现在用户详细信息中有一个“用户类别”的数据项这就是字典表的内容,

2、为了能够将显示页面中的“用户类别”显示为一个下列列表而不是一个文本框,我们就需要扩大查询的范围也就是那个“用户类别”的字典表。所以,我称其为连带查询)查询这些初始化内容。这样做就可以在一个action中将初始化和页面小时搞定,但是,这样做就使得我们在查询中扩大了actionfrom的范围。3. 如果使用struts的标签,我们可以通过两种方式来实现初始化:n 在执行主action之前先执行一个页面初始化的辅助action中。这需要在struts-config.xml文件中对两个action做一定的关联。具体我没有这样实现过,有兴趣可以探讨一下。n 通过自定义的标签库实现页面初始化。这种方式的基

3、本思路是:在页面中通过插入标签调用后端数据库查询程序,然后由查询程序将查询结果放置到pageContext中,最后,再由Struts定义的标签库从pageContext中将数据取出。这样做的好处就是对于前端实现人员仅需要插入一个标签即可实现页面的初始化。详情见以下解决方法的说明。解决方法:1. 创建一个标签库说明,此文件放置在WEB-INF目录下即可。比如:app.tld,内容如下:1.01.1User This tag library contains employee tag extensions dictionarycom.dc.sibss.cs.tag.DictionaryTagemp

4、tynametruetruevocationcom.dc.sibss.cs.tag.VocationTagemptydistrictcom.dc.sibss.cs.tag.DistrictTagempty2. 根据app.tld中定义的创建所需要的标签类。表现类需要继承javax.servlet.jsp.tagext.TagSupport,并实现doStartTag()方法。具体内容如下:package com.dc.sibss.cs.tag;import java.util.Collection;import java.util.HashMap;import java.util.String

5、Tokenizer;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;import mon.exceptions.DAOSysException;import com.dc.sibss.sm.dao.ParaDictDAO;import com.dc.sibss.sm.misc.TableNames;/* * * Title: * Description: 所有数据字电表的查询通过此类实现。为了 * 实现此功能你需要提供特殊的字典表名缩写。具体如下: * certifi 映射于 Ta

6、bleNames.CERTIFI * oms 映射于 TableNames.OMS * new 映射于 TableNames.NEW * rate 映射于 TableNames.RATE * charge 映射于 TableNames.CHARGE * contract 映射于 TableNames.CONTRACT * partner 映射于 TableNames.PARTNER * staff 映射于 TableNames.STAFF * work 映射于 TableNames.WORK * arrear 映射于 TableNames.ARREAR * stop 映射于 TableName

7、s.STOP * voluntary 映射于 TableNames.VOLUNTARY * customer 映射于 TableNames.CUSTOMER * subscriber 映射于 TableNames.SUBSCRIBER * tele 映射于 TableNames.TELE * port 映射于 TableNames.PORT * exch 映射于 TableNames.EXCH * res 映射于 TableNames.RES * Copyright: Copyright(c) 2003 * Company: Digital China * author 王艺 * versio

8、n 1.0 */public class DictionaryTagextends TagSupport/* * 使用标签的用户必须提供的属性 */private String name;/* * 存放数据对照关系的对象 */static HashMap map;/* * 设置表名的映射名,此名如果需要多值可以将名称用“,”分开。如:name=certifi,oms。 * param name 映射表名 */public void setName( String name )this.name = name;/* * 得到映射表名 * return 逗号分开的字符串 */public Stri

9、ng getName()return this.name;/* * 执行数据库查询,并将结果放入pageContext中。 * return 操作结果标识 * throws JspException */public int doStartTag()throws JspExceptionif( map=null )map = new HashMap();init( map );if( ( this.name=null )| ( this.name.trim().length()=0 ) )return SKIP_BODY;StringTokenizer st = new StringTokenizer( name, , );ParaDictDAO pdd = new ParaDictDAO();tryString temp;while( st.hasMoreElements() )/VoParaDict对象的结合,Collection是一个ArrayList对象temp = ( String )st.nextElement();Collection cols = pdd.selParaDictList( ( String )map.get( temp

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号