支持EL(expression language)的Tag

 
1.
public class DeptNameTag extends TagSupport{
       private Log logger = LogFactory.getLog(DeptNameTag.class);
       private Object deptId;
 
       public Object getDeptId() {
              return DeptId;
       }
 
       public void setDeptId(Object deptId) throws JspException {
              this.deptId = ExpressionEvaluatorManager.evaluate("deptId", deptId.toString(), Object.class, this, pageContext);
       }
      
       public int doEndTag() throws JspException {
              List list = (List) pageContext.getServletContext().getAttribute(Constant.DEPT);
              if(list!=null) {
                     for(int i=0;i<list.size();i++){
                            DeptVO DeptVO=(DeptVO)list.get(i);
                            if(deptId.equals(DeptVO.getdeptId().toString())){
                                   try {
                                          pageContext.getOut().print(DeptVO.getDeptName());
                                   } catch (IOException e) {
                                          // TODO Auto-generated catch block
                                          //e.printStackTrace();
                                          logger.error(e);
                                   }
                                   break;
                            }
                                    
                     }
              }
             
              return super.doEndTag();
       }
 
}
 
注意:
在路径org.apache.taglibs.standard.lang.support下,有个叫 ExpressionEvaluatorManager.evaluate 的方法,当el表达式作为入参时,调用这个方法,在tag内即可自动把el表达式转化
 ExpressionEvaluatorManager.evaluate有四个参数。第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。第二个要求字符串,通常简单调用输入对象的toString方法。第三个是类,通常用Object.class。第四个用this即可,第五个是pageContext变量。
 
2. < tag >
      < name > dept </ name >
      < tag-class > com.web.taglib.DeptNameTag </ tag-class >
      < body-content > JSP </ body-content >
      < description >
          get the Dept name according to DeptId
      </ description >   
      < attribute >
          < name > deptId </ name >
          < required > true </ required >
          < rtexprvalue > true </ rtexprvalue >
      </ attribute >   // 此时不用写 <type>java.lang.String</type>
    </ tag >
 
3 <cea:dept deptId='${DeptVO.DeptName}' />
表示支持EL表达式,可以直接在diego:withObject value="${people}">
可以写${people}这在里面.
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值