工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
Taglib原理和实现:再论El和JSTL标签
[文章信息]
作者:WalkingWithJava
时间:2005-03-04
出处:Java研究组织
责任编辑:方舟
[文章导读]
你想和JSTL共同工作。比如,在用自己的标签处理一些逻辑之后,让JSTL处理余下的工作
advertisement
专题教程宝典
【软件应用】
【办公软件】
【图形图像】
【网页制作】
【操作系统】
【网络安全】
【程序开发】
【日报周刊】
【多媒体教程】
· 天极软件应用多媒体教程
· Windows开机关机故障分析及排除
· 图解PS按比例自动批量裁剪照片
· Visual FoxPro9.0构建管理系统图解
· 体验面对面的网络视频通讯
· 对付网页恶意代码
· Word动画教程:表格操作全接触
· JBuilder 2005开发Applet游戏全接触
· WinRAR操作技巧与另类应用
· 用VMware 5实现多系统同时运行
[正文]
  问题:你想和JSTL共同工作。比如,在用自己的标签处理一些逻辑之后,让JSTL处理余下的工作。

  看这个JSP例子:

<%
 String name="diego";
 request.setAttribute("name",name);
%>
<c:out value="${name}"/>
......

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

  下面这个例子,从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

<%@ page language="java" %>
<%@ page import="diegoyun.vo.*"%>
<%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%>
<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
<html>
<body bgcolor="#FFFFFF">
<%
 Man man = new Man();
 man.setName("diego");
 request.setAttribute("man",man);
%>
Get value from request and set it's property value into request:<br>
<diego:set value="${man}" property="name" var="myname"/>
 now use OutTag of jstl taglib to get the name:<br>
 value is : <c:out value="${myname}" />

</body>
</html>

  运行,效果如下:

Get value from request and set it's property value into request:
now use OutTag of jstl taglib to get the name:
value is : diego

  结束语

  和JSTL交互是非常有用的技术。在JSTL里提供了许多完成基本功能的标签,如输出,循环,条件选择等。仅在处理自己特定逻辑的时候才实现自己的标签,并提供和jstl交互,能大大提高重用性和减少工作量。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Java桌面应用程序设计新贵:SWT 简介
  • CORBA技术探索起步
  • 用JBuilder9制作EXE文件不公开秘笈
  • 用JBuilder 2005实现重构之认识重构
  • JBuilder2005+JBOSS+Oracle9i环境配置
  • 宏智科技第一大股东王栋可能将接棒中科健
  • 微软中国公关高手龚定宇可能将于本周离职
  • 苏宁驳斥董事长被捕传闻 第一高价股遭攻击
  • 世通前老总面临三项指控 证据不足定罪困难
  • 2004北美十大渠道巨擘 钱伯斯鲍尔默榜上有名
  • 波导渠道精兵简政 西门子波导联盟名存实亡
  • 地面数字电视国家标准 出台很慢 融合很难
  • 政府信息化新需求:应急联动系统要“升级”
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索