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

2016-02-19 14:29 7 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享Taglib原理和实现 第五章:再论支持El表达式和jstl标签吧。

【 tulaoshi.com - 编程语言 】

  

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  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
    nameset/name
    tag-classdiegoyun.SetVarTag/tag-class
    body-contentempty/body-content
    attribute
     namevalue/name
     requiredtrue/required
     rtexprvaluetrue/rtexprvalue
    /attribute
    attribute
     nameproperty/name
     requiredfalse/required
     rtexprvaluefalse/rtexprvalue
    /attribute
    attribute
     namevar/name
     requiredfalse/required
     rtexprvaluefalse/rtexprvalue
    /attribute
   /tag

  编写jsp
  

来源:http://www.tulaoshi.com/n/20160219/1607066.html

延伸阅读
标签: Web开发
表达式和运算符 1、表达式 在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,这一过程通常又叫称一个叫表达式来完成,可以说它是变量、常量、布尔及运算符的集合,因此表达式可以分为算术表述式、字串表达式、赋值表达式以及布尔表达式等。 2、运算符 运算符完成操作的一系列符号,在JavaScript中有算术运...
标签: Web开发
body onload="f.a.select();"?phpecho 'a:'.htmlspecialchars($a);echo 'bra1:';$a1 = eregi_replace('(^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}$)',' a href="mailto:\1"\1/a ', $a) ;echo htmlspecialchars($a1);echo "bra1:$a1";echo 'b...
标签: Web开发
在Emeditor中用“.*”匹配任意字符,如要将文章所有类似“table style="boder:1px solid blue"”简化为“table”可搜索字符串“table style=".*"”并替换为“table”即可。 相应地在search and replace(sr32.exe)中用“*[]”来匹配,如将所有“ style="boder:1px solid blue"”去除可用字串“ style='*[]'”进行搜索,替换字串为空,搜索替换...
标签: Web开发
JavaScript通过RegExp类来支持正则表达式,举一个最简单的例子: 代码如下: var regApple = new RegExp("apple"); 它可以匹配一个字符串中出现的第一个"apple"字符串,并且对大小写敏感。在构造方法中加入第二个参数"g"则代表的搜索出字符串中所有的 "apple",这里"g"代表"global"。如果第二个参数为"i",则代表着case-insensitive,匹配过...
标签: Web开发
XSL条件IF    XSL可以用一个IF语句过滤来自XML文档的信息。      在哪里放置IF条件    现在来重新看看你已经看过多次的XML文档:       ?xml version="1.0"?       CATALOG       CD     ...

经验教程

803

收藏

8
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部