关闭

Struts2 自定义标签

183人阅读 评论(0) 收藏 举报
在用struts2写自定义标签时遇到了一些问题,说了一个多小时解决了,嗯就在这里做个备忘吧!
(第一次写,,呵呵,有点怕出错,如果说的不好大家不要笑..呵呵)

说明一下我的环境:eclipse+tomcat

自定义标签编写分为以下几步:
1.编写UIBean:
Java代码 复制代码 收藏代码
  1.   
  2. @StrutsTag(description = "my email", name = "email", tldTagClass = "org.oa.web.tags.MyMailTag")   
  3. public class MyMail extends UIBean {   
  4.     public static final String TEMPLATE_NAME = "mymail";   
  5.   
  6.     private String address;   
  7.   
  8.     public MyMail(ValueStack stack, HttpServletRequest request,   
  9.             HttpServletResponse response) {   
  10.         super(stack, request, response);   
  11.     }   
  12.   
  13.     @StrutsTagAttribute(description = "set e-mail address ", type = "String")   
  14.     public void setAddress(String address) {   
  15.         this.address = address;   
  16.     }   
  17.   
  18.     @Override  
  19.     protected String getDefaultTemplate() {   
  20.         return TEMPLATE_NAME;   
  21.     }   
  22.   
  23.     @Override  
  24.     protected void evaluateExtraParams() {   
  25.         super.evaluateExtraParams();   
  26.         if (address != null) {   
  27.             addParameter("address", findString(address));   
  28.         }   
  29.     }   
  30.   
  31. }  


2.编写tag类:
AbstractUITag这个类要用到JSP-API,我大部分的时间都是浪费在这里,
这地方主要问题在于分清开发环境与运行环境.
我的包都是放在WEB-INF/lib下地.所以这里是运行环境,同时也是开发环境.
这里不要放入jsp-api.jar.tomcat下面lib文件夹中有.这样jsp-api.jar只需要在开发时
引用这个包,而不要把jsp-api.jar放入WEB-INF/lib下.

Java代码 复制代码 收藏代码
  1. public class MyMailTag extends AbstractUITag {   
  2.   
  3.     private static final long serialVersionUID = 1L;   
  4.     private String address;   
  5.   
  6.     @Override  
  7.     public Component getBean(ValueStack stack, HttpServletRequest req,   
  8.             HttpServletResponse res) {   
  9.   
  10.         return new MyMail(stack, req, res);   
  11.     }   
  12.   
  13.     @Override  
  14.     protected void populateParams() {   
  15.         super.populateParams();   
  16.         MyMail mail = (MyMail) component;   
  17.         mail.setAddress(address);   
  18.     }   
  19.   
  20.     public void setAddress(String address) {   
  21.         this.address = address;   
  22.     }   
  23.   
  24. }  


3.tld文件(只是重要部分.)
这个文件我是放在这个目录中的 WEB-INF/tld/user-tags.tld
Xml代码 复制代码 收藏代码
  1. <tlib-version>1.10</tlib-version>  
  2. <short-name>u</short-name>  
  3. <uri>/user-tags</uri>  
  4. <tag>  
  5.     <name>email</name>  
  6.     <tag-class>org.oa.web.tags.MyMailTag</tag-class>  
  7.     <body-content>JSP</body-content>  
  8.     <attribute>  
  9.         <name>address</name>  
  10.         <required>true</required>  
  11.     </attribute>  
  12. </tag>  


4.建立mymail.ftl文件.
文件放置在下面这个目录中
webroot/template/xhtml
webroot是我项目的根目录,
template不变,
xhtml是当前你使的哪种theme,如果是simple你就建simple文件夹.跟据自身情况定.

My E-mail:${parameters.address?html}

5配置web.xml文件
Xml代码 复制代码 收藏代码
  1. <jsp-config>  
  2.     <taglib>  
  3.         <taglib-uri>/WEB-INF/tld/user-tags.tld</taglib-uri>  
  4.         <taglib-location>/user-tags</taglib-location>  
  5.     </taglib>  
  6. </jsp-config>  


6.action类
Java代码 复制代码 收藏代码
  1. public class MyEmailAction {   
  2.   
  3.        
  4.     private String address;   
  5.   
  6.     @Override  
  7.     public String execute() throws Exception {   
  8.         setAddress("XXXXXXXXX@gmail.com");   
  9.         return super.execute();   
  10.     }   
  11.   
  12.     public String getAddress() {   
  13.         return address;   
  14.     }   
  15.   
  16.     public void setAddress(String address) {   
  17.         this.address = address;   
  18.     }   
  19.   
  20. }  


7.建立jsp文件
Jsp代码 复制代码 收藏代码
  1. <head>   
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   
  3. <%@ taglib prefix="u" uri="/user-tags" %>   
  4. <%@ taglib prefix="s" uri="/struts-tags"%>   
  5. <title>Insert title here</title>   
  6. </head>   
  7. <body>   
  8.     <h1>struts-tags:<s:property value="address"/></h1>   
  9.     <h1>user-tags: <u:email address="%{address}"/></h1>   
  10. </body>  


struts2.xml就不写了. 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4955次
    • 积分:57
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档