下例阐述了以上两种共享对象的方法。在这个例子当中,一个查询tag检查一个名为connection的属性名是否在doStartTag中被设置。如果connection属性被设置,tag处理类从pageContext中得到这个connection对象。否则,此tag处理类先找到它的父tag处理类,然后从它的父tag处理类中找到connection对象。
- public
class
QueryTag extends BodyTagSupport - {
- private String connectionId;
- public int doStartTag() throws JspException
- {
- String cid = getConnection();
- if (cid != null )
- {
- //存在一个connection id,使用它。
- connection = (Connection) pageContext.getAttribute(cid);
- }
- else
- {
- ConnectionTag ancestorTag = (ConnectionTag)findAncestorWithClass(this ,
- ConnectionTag.class );
- if (ancestorTag == null )
- {
- throw new JspTagException(“一个没有connection属性的查询标签必须被一个connection标记嵌套。”);
- }
- connection = ancestorTag.getConnection();
- }
- }
- }
此查询标签在JSP页面中的调用形式可以从以下2种定义中任选一种:
<tt:connection id=”con01” ...> ... </tt:connection>
<tt:query id=”balances” connection=”con01” >
SELECT account, balance FROM acct_table
where customer_num = <%= request.getCustno() %>
</tt:query>
或
<tt:connection ...>
<x:query id=”balances”>
SELECT account, balance FROM acct_table
where customer_num = <%= request.getCustno() %>
</x:query>
</tt:connection>
与此同时,在TLD中必须指定connection属性为可选的,定义如下:
<tag>
...
<attribute>
<name>connection</name>
<required>false</required>
</attribute>
</tag>
作者简介:罗小虎,男,24岁,现在在荆州市农村信用社任技术主管,本科,研究方向:java和面像对向的软件工程。
电子邮件:smltiger@sina.com






