您的位置:首页 > Web前端 > JavaScript

JSP2.0标签库新特性 —— 动态属性

2010-10-10 23:19 204 查看
JSP2.0的标签库引入一个新特性——动态属性,该特性通过接口javax.servlet.jsp.tagext.DynamicAttributes来实现。实现该接口需要实现setDynamicAttribute()方法,该方法用于接收动态属性。使用动态属性这个新特性后,标签类对应属性的get、set方法就可以去掉了,tld文件也可以去掉相应的属性配置。

 

如果需要使用JSP2语法,其web.xml文件必须使用Servlet 2.4以上版本的配置文件。

 

1、标签类TestTag的源码:

Java代码
public class TestTag extends BodyTagSupport implements DynamicAttributes {  
    private User user;  
      
    public TestTag(){  
        this.user = new User();  
    }  
      
    public void setDynamicAttribute(String uri, String localName, Object value) throws JspException {  
        try{  
            //此处获取动态属性名和值  
            BeanUtils.setProperty(user, localName, value);  
        }catch(IllegalAccessException e){  
            throw new JspException("该UI不存在该属性");  
        }catch(InvocationTargetException e){  
            throw new JspException("该UI不存在该属性");  
        }  
    }  
      
    public User getUser() {  
        return user;  
    }  
      
    public void setUser(User user) {  
        this.user = user;  
    }  


public class TestTag extends BodyTagSupport implements DynamicAttributes {
 private User user;
 
 public TestTag(){
  this.user = new User();
 }
 
 public void setDynamicAttribute(String uri, String localName, Object value) throws JspException {
  try{
   //此处获取动态属性名和值
   BeanUtils.setProperty(user, localName, value);
  }catch(IllegalAccessException e){
   throw new JspException("该UI不存在该属性");
  }catch(InvocationTargetException e){
   throw new JspException("该UI不存在该属性");
  }
 }
 
 public User getUser() {
  return user;
 }
 
 public void setUser(User user) {
  this.user = user;
 }
}

2、自定义标签在标签库描述符文件中的声明:

     dynamic-attributes参数设置为true就是表示该标签支持动态属性特性。

Xml代码
<tag> 
    <name>test</name> 
    <tag-class>com.cjm.web.tag.TestTag</tag-class>   
    <dynamic-attributes>true</dynamic-attributes>    
</tag> 

<tag>
 <name>test</name>
 <tag-class>com.cjm.web.tag.TestTag</tag-class>
 <dynamic-attributes>true</dynamic-attributes> 
</tag>

3、自定义标签的使用:

Html代码
<%@ taglib prefix="cjm" uri="/WEB-INF/cjm.tld"%> 
 
<cjm:test p1="v1" p2="v2"/> <!-- p1、p2标签属性在标签类和描述符文件中都没有定义 --> 
      
<cjm:test> 
    <jsp:attribute name="uid" trim="true"><%=request.getParameter("uid")%></jsp:attribute> 
    <jsp:attribute name="pwd" trim="true"><%=request.getParameter("pwd")%></jsp:attribute> 
</cjm:test> 

<%@ taglib prefix="cjm" uri="/WEB-INF/cjm.tld"%>

<cjm:test p1="v1" p2="v2"/> <!-- p1、p2标签属性在标签类和描述符文件中都没有定义 -->
   
<cjm:test>
 <jsp:attribute name="uid" trim="true"><%=request.getParameter("uid")%></jsp:attribute>
 <jsp:attribute name="pwd" trim="true"><%=request.getParameter("pwd")%></jsp:attribute>
</cjm:test>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp user string object servlet ui