- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于struts中初始化页面问题的解决方案
问题描述:
在开发的过程中有时会需要从数据库中读取数据,然后将这些数据显示到页面上作为某些下拉列表的列表内容。
在较早的应用中是通过在jsp中添加连接数据库并读取数据的方式来实现初始页面的。
在struts中如果我们不用标签,可以在action中连带(之所以称其为连带查询是因为一般我们使用action的目的并不仅仅是为了初始化页面。比如:我们需要根据用户id号查询这个用户的详细信息并显示给用户――这时我们的目的是查询用户详细信息,但是,现在用户详细信息中有一个“用户类别”的数据项――这就是字典表的内容,为了能够将显示页面中的“用户类别”显示为一个下列列表而不是一个文本框,我们就需要扩大查询的范围――也就是那个“用户类别”的字典表。所以,我称其为连带查询)查询这些初始化内容。这样做就可以在一个action中将初始化和页面小时搞定,但是,这样做就使得我们在查询中扩大了actionfrom的范围。
如果使用struts的标签,我们可以通过两种方式来实现初始化:
在执行主action之前先执行一个页面初始化的辅助action中。这需要在struts-config.xml文件中对两个action做一定的关联。具体我没有这样实现过,有兴趣可以探讨一下。
通过自定义的标签库实现页面初始化。这种方式的基本思路是:在页面中通过插入标签调用后端数据库查询程序,然后由查询程序将查询结果放置到pageContext中,最后,再由Struts定义的标签库从pageContext中将数据取出。这样做的好处就是对于前端实现人员仅需要插入一个标签即可实现页面的初始化。详情见以下解决方法的说明。
解决方法:
创建一个标签库说明,此文件放置在WEB-INF目录下即可。比如:app.tld,内容如下:
?xml version=1.0 encoding=UTF-8?
!DOCTYPE taglib PUBLIC -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN /j2ee/dtds/web-jsptaglibrary_1_1.dtd
taglib
tlibversion1.0/tlibversion
jspversion1.1/jspversion
shortnameUser/shortname
info
This tag library contains employee tag extensions
/info
!-- This tag is used for creating cases --
tag
namedictionary/name
tagclasscom.dc.sibss.cs.tag.DictionaryTag/tagclass
bodycontentempty/bodycontent
attribute
namename/name
requiredtrue/required
rtexprvaluetrue/rtexprvalue
/attribute
/tag
tag
namevocation/name
tagclasscom.dc.sibss.cs.tag.VocationTag/tagclass
bodycontentempty/bodycontent
/tag
tag
namedistrict/name
tagclasscom.dc.sibss.cs.tag.DistrictTag/tagclass
bodycontentempty/bodycontent
/tag
/taglib
根据app.tld中定义的tagclass创建所需要的标签类。表现类需要继承javax.servlet.jsp.tagext.TagSupport,并实现doStartTag()方法。具体内容如下:
package com.dc.sibss.cs.tag;
import java.util.Collection;
import java.util.HashMap;
import java.util.StringTokenizer;
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;
/**
*
*
文档评论(0)