龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Taglib原理和实现 第五章:再论支持El表达式和jstl标签

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
第五章:再论支持El表达式和jstl标签 1。问题:你想和jstl共同工作。比如,在用自己的标签处理一些逻辑之后,让jstl处理余下的工作。 2。看这个jsp例子: .... % String name="diego"; request

  

  第五章:再论支持El表达式和jstl标签

  1。问题:你想和jstl共同工作。比如,在用自己的标签处理一些逻辑之后,让jstl处理余下的工作。

  2。看这个jsp例子:
  ....
  <%
  String name="diego";
  request.setAttribute("name",name);
  %>

  <c:out value="${name}"/>
  ......

    许多jstl标签支持El表达式,所以,只要你在自己的标签内部把值塞进request,其他jstl标签就能使用它们

  3。下面这个例子,从request里面取得对象,找到它属性的值,塞到request里去。

  package diegoyun;

  import Javax.servlet.jsp.JspException;
  import javax.servlet.jsp.tagext.TagSupport;
  import org.apache.commons.beanutils.PropertyUtils;
  import org.apache.taglibs.standard.lang.support.EXPressionEvaluatorManager;

  public class SetVarTag extends TagSupport
  {
   private Object value = null; 
   private String property = null; 
   private String var = null;
   public void setVar(String var)
   {
    this.var = var;
   }
   public void setProperty(String property)
   {
    this.property = property;
   }
   public void setValue(Object value)throws JspException{
       this.value = ExpressionEvaluatorManager.evaluate(
              "value", value.toString(), Object.class, this, pageContext);  
   }
   public int doEndTag() throws JspException{
    Object propertyValue = null;
    try{
     propertyValue = PropertyUtils.getProperty(value, property);
    }
    catch (Exception e) {
     throw new JspException(e);
    }  
    pageContext.setAttribute(var,propertyValue);
    return EVAL_PAGE;
   }
  }

  编写tld
  <!--SetVarTag-->
   <tag>
    <name>set</name>
    <tag-class>diegoyun.SetVarTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
     <name>value</name>
     <required>true</required>
     <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
     <name>property</name>
     <required>false</required>
     <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
     <name>var</name>
     <required>false</required>
     <rtexprvalue>false</rtexprvalue>
    </attribute>
   </tag>

  编写jsp
  
  

精彩图集

赞助商链接