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

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

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

【 tulaoshi.com - 编程语言 】

  

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

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

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

  c:out value="${name}"/
  ......

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

    许多jstl标签支持El表达式,所以,只要你在自己的标签内部把值塞进request,其他jstl标签就能使用它们

  3。下面这个例子,从request里面取得对象,找到它属性的值,塞到request里去。

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

  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
  

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

延伸阅读
标签: Web开发
JavaScript通过RegExp类来支持正则表达式,举一个最简单的例子: 代码如下: var regApple = new RegExp("apple"); 它可以匹配一个字符串中出现的第一个"apple"字符串,并且对大小写敏感。在构造方法中加入第二个参数"g"则代表的搜索出字符串中所有的 "apple",这里"g"代表"global"。如果第二个参数为"i",则代表着case-insensitive,匹配过...
Rendering with Meshes 翻译:claymanclayman_joe@yahoo.com.cn 定义Mesh 虽然有很多时候,你需要手动创建顶点和索引数据,但更普遍的情况是从外部的资源加载已有的顶点数据,比如从一个文件。通常我们使用.X文件来保存这些信息。在前一章里,代码的大部分都用来创建几何体了。对于简单的三角形和立方体来说这似乎是完全可行的,但设想假如用...
标签: 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开发
    public string DealHtml(string str) { //str = Regex.Replace(str, @"\(img)[^]*|\/(img)", "", RegexOptions.IgnoreCase); str = Regex.Replace(str, @"\(table|tbody|tr|td|th)[^]*|\/(table|tbody|tr|td|th)", "", RegexOptions.IgnoreCase); str = Regex.Replace(str, @"\(div|blockquote|fieldset|legend)[^]*|\/...

经验教程

592

收藏

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