WEB开发网
开发学院WEB开发Jsp Taglib原理和实现 第五章:再论支持El表达式和jst... 阅读

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

 2008-01-05 20:01:41 来源:WEB开发网   
核心提示:第五章:再论支持El表达式和jstl标签1,问题:你想和jstl共同工作,Taglib原理和实现 第五章:再论支持El表达式和jstl标签,比如,在用自己的标签处理一些逻辑之后,从request里面取得对象,找到它属性的值,让jstl处理余下的工作,2

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

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

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

<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>
 <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

Tags:Taglib 原理 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接