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>
如果需要使用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>
相关文章推荐
- js-dom-动态创建html标签时,name属性的初始化问题
- 流畅python学习笔记:第十九章:动态属性和特性
- 后台动态设置前台标签内容和属性(转自http://www.wzsky.net/html/Program/net/26171.html)
- 获取多个input标签,并动态改变input标签的name属性
- 动态修改script标签中的src属性存在的问题
- 利用link标签rel="alternate stylesheet"属性实现界面动态换肤
- 为标签设置动态属性
- 通过特性动态获取属性及值
- 怎么动态的设置select标签中option选项的selected属性
- 工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。
- DOM对象属性(property)与HTML标签特性(attribute)
- 自定义动态属性标签
- 利用a标签特性解析地址(附加属性说明)
- 如何使<a>标签中的 href 属性动态绑定
- JS实现动态监听select标签,并修改属性
- 动态修改网页Header属性,Title,Meta标签等
- jQuery 动态内容添,获取HTML标签和属性
- 动态html标签textarea的readOnly属性(JavaScript)
- (原创)后台动态设置前台标签内容和属性
- html的meta总结,html标签中meta属性使用介绍和 动态替换字符串