<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

    主站蜘蛛池模板: 永久免费精品影视网站| 国产精品午夜免费观看网站| 国产美女无遮挡免费视频| 青青免费在线视频| 亚洲精品国精品久久99热一| 最近中文字幕无免费| 黄色网址大全免费| 亚洲视频在线观看网站| www国产亚洲精品久久久日本| 久久成人免费播放网站| 亚洲精华国产精华精华液好用| 亚洲线精品一区二区三区影音先锋| 青青青国产在线观看免费网站| 杨幂最新免费特级毛片| 亚洲人成在线播放| 成人午夜亚洲精品无码网站| 无码人妻久久一区二区三区免费丨| 国产久爱免费精品视频| 亚洲午夜福利在线视频| 亚洲VA中文字幕无码毛片| 国产极品粉嫩泬免费观看| 9420免费高清在线视频| 2022免费国产精品福利在线 | 亚洲白嫩在线观看| 亚洲国产主播精品极品网红| 日韩不卡免费视频| 成全高清在线观看免费| 疯狂做受xxxx高潮视频免费| 久久亚洲最大成人网4438| 亚洲avav天堂av在线不卡| 亚洲Av无码国产情品久久| 欧美最猛性xxxxx免费| 国产成人精品免费久久久久| 成人国产网站v片免费观看| 亚洲日本VA中文字幕久久道具| 亚洲午夜精品久久久久久人妖| 亚洲午夜av影院| 四虎永久在线精品免费影视 | 5g影院5g天天爽永久免费影院| jizz在线免费观看| 污视频网站免费在线观看|