当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: JSP页面中的自定义标签2 /gceclub
 

 

    摘要:暂无 ......
    摘要:write your own operating system tutorial lesson 1: the boot sector in this lesson we’ll learn about the contents of the boot sector so that we can learn to write our own boot program. when th......


JSP页面中的自定义标签2

jsp页面中的自定义标签2

带属性的标签 【程序编程相关:(转载)异步IO、APC、IO完成端口、

  

  【推荐阅读:(转载)异步IO、APC、IO完成端口、

对于每一个标签属性,都必须在标签handler中定义一个属性以及符合javabean结构规范的get与set方法.例如,logic:present标签的标签handler 【扩展信息:(转载)异步IO、APC、IO完成端口、

在标签handler中定义属性

<logic:present parameter="clear">

包含下列声明与方法:

protected string parameter = null;

public string getparameter() {

  return (this.parameter);

}

public void setparameter(string parameter) {

  this.parameter = parameter;

}

注意,如果属性命名为id并且标签handler继承自tagsupport类,那么就不需要定义属性与set与get方法,因为它们已经由tagsupport定义了.

值为string的标签属性可以指定标签handler可用的隐式对象的一个属性.通过向隐式对象的[set|get]attribute方法传递标签属性值可以访问一个隐式对象属性.这是将脚本变量名传递给标签handler的好方式,在这里脚本变量与储存在页面上下文中的对象相关联(见隐式对象).

attribute元素

对于每一个标签属性,都必须在attribute元素中指定这个属性是否是必需的.其值是否可以由表达式确定.还可能指定属性的类型.对于静态值,类型总是java.lang.string.如果rtexprvalue元素是true或者yes,那么type元素定义会将任何指定的表达式的预期返回类型指定为属性的值.

<attribute>

  <name>attr1</name>

  <required>true|false|yes|no</required>

  <rtexprvalue>true|false|yes|no</rtexprvalue>

  <type>fully_qualified_type</type>

</attribute>

如果tag属性不是必需的,那么标签handler应该提供一个默认值.

logic:present标签的tag元素声明parameter属性不是必需的(因为标签还可以测试是否存在其它实体,如bean属性)以及其值可以由运行时表达式设置.

<tag>

  <name>present</name>

  <tag-class>org.apache.struts.taglib.

    logic.presenttag</tag-class>

  <body-content>jsp</body-content>

  ...

  <attribute>

    <name>parameter</name>

    <required>false</required>

    <rtexprvalue>true</rtexprvalue>

  </attribute>

  ...

</tag>

属性验证

标签库的文档应该描述标签属性的有效值.在转换jsp页面时,web容器将强制应用每一个属性的tld元素中包含的限制.

在转换时还用从tagextrainfo派生的类的isvalid方法验证传递给标签的属性.这个类也用于提供有关标签定义的脚本变量的信息(见提供有关脚本变量的信息).

用tagdata对象向isvalid方法传递属性信息,它包含每一个标签属性的属性-值元组.因为验证在转换时发生,所以在请求时计算的属性值将设置为tagdata.request_time_value.

<tt:twa attr1="value1"/>标签有下列tld attribute元素:

<attribute>

  <name>attr1</name>

  <required>true</required>

  <rtexprvalue>true</rtexprvalue>

</attribute>

这个声明表明attr1的值可以在运行时确定.

下面的isvalid方法检查attr1的值是否为有效的布尔值.注意由于的attr1值可以在运行时计算,所以isvalid必须检查标签用户是否选择了提供运行时值.

public class twatei extends tagextrainfo {

  public boolean isvalid(tagdata data) {

    object o = data.getattribute("attr1");

    if (o != null && o != tagdata.request_time_value) {

      if (((string)o).tolowercase().equals("true") ||

        ((string)o).tolowercase().equals("false") )

        return true;

      else

        return false;

    }

    else

      return true;   }

}

带正文的标签

标签handler

带正文的标签的标签handler根据标签handler是否需要与正文交互而有不同的实现.我们说的交互的意思是标签handler读取或者修改正文的内容.

标签handler不与正文交互

如果标签handler不需要与正文交互,那么标签handler应该实现tag接口(或者从tagsupport派生).如果需要对标签的正文进行判断,那么dostarttag方法就需要返回eval_body_include,否则,它应该返回skip_body.

如果标签handler需要反复地判断正文,那么它就应该实现iterationtag接口或者从tagsupport派生.如果它确定需要再次评估正文,那么它应该从dostarttag与doafterbody方法返回eval_body_again.

标签handler与正文交互

如果标签handler需要与正文交互,那么标签handler必须实现bodytag (或者从bodytagsupport派生).这种处理器通常实现doinitbody与doafterbody方法.这些方法与由jsp页面的servlet传递给tag handler的正文内容交互.


...   下一页
    摘要: ado.net 中引入了数据库连接池的概念,其实默认我们在连接数据库的时候已经用了数据库连接池。比如 sqlconnection conn = new sqlconnection();conn.connectionstring = "integrated security=sspi;initial catalog=pubs";conn.connectionstring......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE