<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-->
      <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
      
      <%@ 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>
      <diego: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

    主站蜘蛛池模板: 日韩a级毛片免费观看| 亚洲精品成人片在线观看精品字幕| 亚洲国产成人AV在线播放| 亚洲高清国产拍精品青青草原| 四虎国产精品免费永久在线| 亚洲w码欧洲s码免费| 久久精品国产亚洲5555| 最近免费中文字幕mv电影| 国产精品亚洲а∨无码播放麻豆| 国产精品亚洲片在线| 久久综合AV免费观看| 中文字幕不卡高清免费| 99热亚洲色精品国产88| 亚洲精品无码不卡在线播HE| 毛片免费在线观看网站| 少妇性饥渴无码A区免费 | 亚洲日韩在线观看| 国产成人精品免费视频大全麻豆| 国产成人高清亚洲一区久久| 亚洲韩国在线一卡二卡| 免费在线不卡视频| 国产免费一区二区三区| 久久嫩草影院免费看夜色| 一本色道久久88亚洲精品综合 | 午夜高清免费在线观看| 亚洲一区二区在线免费观看| 免费观看亚洲人成网站| 亚洲成在人线中文字幕| 亚洲精品国产精品乱码视色| 国产三级免费观看| 青娱乐免费在线视频| 午夜影院免费观看| 久久av免费天堂小草播放| 亚洲爆乳无码精品AAA片蜜桃| 亚洲精品日韩专区silk| 亚洲中文字幕无码一区二区三区 | 国产精品成人啪精品视频免费| 亚洲性无码一区二区三区| 亚洲精品一卡2卡3卡三卡四卡| 亚洲无线码一区二区三区| 亚洲AⅤ无码一区二区三区在线|