程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Taglib原理和實現 第五章:再論支持El表達式和jstl標簽

Taglib原理和實現 第五章:再論支持El表達式和jstl標簽

編輯:JAVA編程入門知識

  

  第五章:再論支持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
  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved