现在的位置: 首页 > 综合 > 正文

定制标志示例

2013年12月18日 ⁄ 综合 ⁄ 共 1542字 ⁄ 字号 评论关闭

 ◆标志体内容定义为可以向客户机返回的任何内容
标志体内容类型包括以下3个值:
1)<body-content>empty</body-content>除了HTML注释外,定义为empty的标志体中不能包括任何内容,因为标志体内容会向客户机返回内容。
2)<body-content>JSP<body-content/>:这种标志体可以包括普通的JSP页面元素,用JSP作为体内容类型时,体内容和普通JSP内容一样处理,即,执行小脚本、表达式求值等。
3)《body-content》tagdependent《body-content/》:表示JSP容器不处理内容,而是让标志去处理/求值内容。

 定制标志示例
★(1)编写标志处理器:
public class DateTag extends TagSupport()
public int doStartTag throws JspException{
Locale loc=pageContext.getRequest().getLocale();
... ...
return SKIP_BODY
}
◆(2)编写标志库描述项:
编写标志处理器类之后,要项web容器提供一些关于标志的信息。为此,可以使用标志描述项,也称TLD文件。

◆(3)注册标志库:在把标志处理器和TLD文件部署(拷贝到相应位置)到Web应用程序后,需要注册标志库,为此,需要在web.xml中添加一小段。定义URL与TLD文件地址之间的映射。

◆(4)导入和使用标志库:完成以上步骤后,就可以使用标志库了,就像核心java.lang包之外的任何java类都要先导入后使用一样,标志库中的标志也要导入:《%◎taglib uri="/simpleTaglib" prefix="simple"%◎》,它指出JSP页面使用标志库,由指定的URI引用,这个URI在Web.xml中定义,prefix属性将标志库中的标志与前缀相关联。本例中选择sample作为前缀。

display date use Tag lib
the date is: 2005-8-19
◆(5)标志属性:
(1)如果web应用程序的不同页面要求标志显示不同格式的日期,可以对每个显示格式生成新的定制标志,但这增加了工作,而且难于维护,这时我们可以使用属性

◆(6)属性语法包括两部分
1>名称:在标志环境中唯一。
2>数值:需用引号括起。

◆(7)属性类型:
1>对于转换的值,如《prefix:tag attribute="123"》,Jsp容器会进行自动地隐式参数转换(调用相应的ValueOf(String)方法)
2>对于请求时的值,如《prefix:tag attribute="《%=a》"》,将不进行自动类型转换,需要自己转换。

★增加属性
1)第一步,修改标志处理器类:
private String format;
public void setFormat(String format){
this.format=format;
}

◆2)修改doStartTag方法:
if (this.format!=null) ... ...
else ... ...
(3)修改标志库描述,添加《attribute》标签,其中《rtexprvalue》布尔属性表示属性是否接收JSP表达式的结果值,true/yes为可以接收JSP表达式的结果值,即如此调用:《prefix:tag attribute="《%=a》"》

◆3)使用标志《prefix:tag format="dd-MMM-YYYY"/》

display date use Tag lib attribute
the date is:19-八月-2005
★增加对象属性

display date use Object attribute tomorrow is20-八月-2005

抱歉!评论已关闭.