<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    Taglib原理和實現:再論El和JSTL標簽

      問題:你想和JSTL共同工作。比如,在用自己的標簽處理一些邏輯之后,讓JSTL處理余下的工作。
      
      看這個JSP例子:
      
     ?。?
      String name="diego";
      request.setAttribute("name",name);
      %>
      <c:out value="${name}"/>
      ......
      
      許多JSTL標簽支持El表達式,所以,只要你在自己的標簽內部把值塞進request,其他jstl標簽就能使用它們
      
      下面這個例子,從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-->
     ?。紅ag>
     ?。糿ame>set</name>
     ?。紅ag-class>diegoyun.SetVarTag</tag-class>
     ?。糱ody-content>empty</body-content>
     ?。糰ttribute>
     ?。糿ame>value</name>
     ?。紃equired>true</required>
      <rtexprvalue>true</rtexprvalue>
     ?。?attribute>
     ?。糰ttribute>
     ?。糿ame>property</name>
      <required>false</required>
     ?。紃texprvalue>false</rtexprvalue>
     ?。?attribute>
      <attribute>
     ?。糿ame>var</name>
     ?。紃equired>false</required>
      <rtexprvalue>false</rtexprvalue>
      </attribute>
     ?。?tag>
      
      編寫JSP
      
      <%@ page language="java" %>
      <%@ page import="diegoyun.vo.*"%>
      <%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%>
     ?。?@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
      <html>
      <body bgcolor="#FFFFFF">
     ?。?
      Man man = new Man();
      man.setName("diego");
      request.setAttribute("man",man);
      %>
      Get value from request and set it's property value into request:<br>
     ?。糳iego:set value="${man}" property="name" var="myname"/>
      now use OutTag of jstl taglib to get the name:<br>
      value is : <c:out value="${myname}" />
      
     ?。?body>
     ?。?html>
      
      運行,效果如下:
      
      Get value from request and set it's property value into request:
      now use OutTag of jstl taglib to get the name:
      value is : diego
      結束語
      和JSTL交互是非常有用的技術。在JSTL里提供了許多完成基本功能的標簽,如輸出,循環,條件選擇等。僅在處理自己特定邏輯的時候才實現自己的標簽,并提供和jstl交互,能大大提高重用性和減少工作量。

    posted on 2006-10-08 14:29 都市淘沙者 閱讀(860) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

    主站蜘蛛池模板: 国产精品美女久久久免费| 免费看男女下面日出水来| 亚洲AV无码一区二区二三区入口 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 在线看片免费不卡人成视频| mm1313亚洲国产精品无码试看 | 亚洲国产综合专区电影在线| 成人免费无码视频在线网站| 一级毛片人与动免费观看| 久久亚洲AV成人无码| 免费看国产曰批40分钟| 午夜免费啪视频在线观看| 亚洲中文无码永久免| 国产gv天堂亚洲国产gv刚刚碰| 国产精品入口麻豆免费观看| 日韩一级片免费观看| 亚洲国产精品久久久久秋霞影院 | 国产亚洲精品国产| 成年性生交大片免费看| a级毛片视频免费观看| 亚洲欧美日本韩国| 久久久久亚洲精品日久生情| 伊人久久亚洲综合影院| 曰批全过程免费视频播放网站 | 一二三四免费观看在线电影| 黄床大片免费30分钟国产精品 | 亚洲AV综合色区无码一二三区| 亚洲精品无码久久千人斩| 国产乱子伦精品免费女| 亚洲国产美女视频| 精品国产免费观看久久久| 永久看日本大片免费35分钟| 182tv免费视频在线观看| 日本免费人成在线网站| 在线a亚洲v天堂网2018| 亚洲人成在线免费观看| a毛片视频免费观看影院| 亚洲AV无码成H人在线观看 | 久久高潮一级毛片免费| 免费毛片a在线观看67194| 国产免费无码AV片在线观看不卡|