使自定标签支持EL表达式(${})

要做下面两件事就可以达到目的了:

1  在tld文件如下配置:

Java代码 复制代码
  1.  <tag>   
  2.       <icon>       
  3.       </icon>   
  4.       <name>rim</name>   
  5.       <tag-class>com.xui.overall.RimTag</tag-class>   
  6.       <body-content>JSP</body-content>   
  7.           <attribute>   
  8.          <name>title</name>   
  9.          <required>false</required>   
  10.            <rtexprvalue>true</rtexprvalue>   
  11.       </attribute>   
  12.    </tag>  
 <tag>
      <icon>    
      </icon>
      <name>rim</name>
      <tag-class>com.xui.overall.RimTag</tag-class>
      <body-content>JSP</body-content>
          <attribute>
         <name>title</name>
         <required>false</required>
           <rtexprvalue>true</rtexprvalue>
      </attribute>
   </tag>

 其中关键的是 <rtexprvalue>true</rtexprvalue> ,使title属性可以接受EL表达式.

2  对接收到的EL表达式处理

 title属性的 set get 方法 如下写

Java代码 复制代码
  1. private Object    title    = "";   
  2. public void setTitle(final Object title) throws JspException   
  3.     {   
  4.         // 对EL表达式的支持   
  5.         this.title = ExpressionEvaluatorManager.evaluate("title", title.toString(), Object.classthis, pageContext);   
  6.     }   
  7.   
  8.     public Object getTitle()   
  9.     {   
  10.         return title;   
  11.     }  
private Object    title    = "";
public void setTitle(final Object title) throws JspException
	{
		// 对EL表达式的支持
		this.title = ExpressionEvaluatorManager.evaluate("title", title.toString(), Object.class, this, pageContext);
	}

	public Object getTitle()
	{
		return title;
	}

 这里处理${}的是org.apache.taglibs.standard.lang.support下,有个叫 ExpressionEvaluatorManager类,

 ExpressionEvaluatorManager.evaluate有五个参数。第一个title属性的名字,本例用"title"就行。第二个要求字符串,通常简单调用输入对象的toString方法。第三个是类,通常用Object.class。第四个用this即可,第五个是pageContext变量。

注意:当你的tag属性支持el表达式时,你必须把它声明为Object对象:本例中是 private Object    title    = "标题";

这样工作就做完了,自定义标签就可以处理 ${}了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值