`

struts2自定义tag

阅读更多
package com.exam.taglib.table;     
    
import org.apache.struts2.components.UIBean;     
import org.apache.struts2.views.annotations.StrutsTag;     
import org.apache.struts2.views.annotations.StrutsTagAttribute;     
import com.opensymphony.xwork2.util.ValueStack;     
    
import javax.servlet.http.HttpServletRequest;     
import javax.servlet.http.HttpServletResponse;     
    
/**   
* struts2版的分页标签   
*    
*/    
    
@StrutsTag(name = "pager", tldTagClass = "org.icim.pager.struts2.PagerTag", description = "struts2 pager by ithink")     
public class Pager extends UIBean {     
    
    final public static String TEMPLATE = "pager";     
    
    protected String totalRecord;     
    protected String totalPage;     
    protected String curPage;     
    protected String pageLimit;     
    protected String url;     
    protected String curCssClass;     
    protected String showTotalPage;     
    protected String showTotalRecord;     
    protected String directJumpType;     
    
    public Pager(ValueStack stack, HttpServletRequest request,     
            HttpServletResponse response) {     
        super(stack, request, response);     
    }     
    
    /**   
     * 用于返回模板的名字,Struts2会自动在后面加入.ftl扩展名以找到特定的模板文件。   
     */    
    @Override    
    protected String getDefaultTemplate() {     
        return TEMPLATE;     
    }     
    
    /**   
     * 设置UIBean的属性,一般Tag中有几个这样的属性,这里就有几个 StrutsTagAttribute注解,说明该属性是int类型,这一步很重要   
     *    
     * @param totalPage   
     */    
    
    @StrutsTagAttribute(description = "total records", type = "Long")     
    public void setTotalRecord(String totalRecord) {     
        this.totalRecord = totalRecord;     
    }     
    
    @StrutsTagAttribute(description = "total pages", type = "Integer")     
    public void setTotalPage(String totalPage) {     
        this.totalPage = totalPage;     
    }     
    
    @StrutsTagAttribute(description = "current page", type = "Integer")     
    public void setCurPage(String curPage) {     
        this.curPage = curPage;     
    }     
    
    @StrutsTagAttribute(description = "how many pages in a panel once", type = "Integer")     
    public void setPageLimit(String pageLimit) {     
        this.pageLimit = pageLimit;     
    }     
    
    @StrutsTagAttribute(description = "url to be linked", type = "String")     
    public void setUrl(String url) {     
        this.url = url;     
    }     
    
    @StrutsTagAttribute(description = "css style of current page", type = "String")     
    public void setCurCssClass(String curCssClass) {     
        this.curCssClass = curCssClass;     
    }     
    
    @StrutsTagAttribute(description = "whether to show totalPage", type = "Boolean", defaultValue = "true")     
    public void setShowTotalPage(String showTotalPage) {     
        this.showTotalPage = showTotalPage;     
    }     
    
    @StrutsTagAttribute(description = "whether to show currentPage", type = "Boolean", defaultValue = "false")     
    public void setShowTotalRecord(String showTotalRecord) {     
        this.showTotalRecord = showTotalRecord;     
    }     
    
    // TODO 直接页面跳转     
    // 这里的directJumpType默认值为none, 可选值为 'select', 'goto'     
    @StrutsTagAttribute(description = "show type of direct jump type. such as select,textbox which can lead going to a page directly", type = "String", defaultValue = "none")     
    public void setDirectJumpType(String directJumpType) {     
        this.directJumpType = directJumpType;     
    }     
    
    /**   
     * 重写evaluateExtraParams()方法,在UIBean初始化后会调用这个方法来初始化设定参数,如addParameter方法,会在freemarker里的parameters里加入一个key   
     * value。这里要注意findString,还有相关的findxxxx方法,它们是已经封装好了的解释ognl语法的工具,具体是怎么样的,大家可以查看一下UIBean的api   
     * doc   
     */    
    @Override    
    protected void evaluateExtraParams() {     
        super.evaluateExtraParams();     
        // findValue()方法本身已对OGNL进行了处理     
    
        if (totalRecord != null) {     
            addParameter("totalRecord", findValue(totalRecord));     
        }     
    
        if (totalPage != null) {     
            addParameter("totalPage", findValue(totalPage));     
        }     
    
        if (curPage != null) {     
            addParameter("curPage", findValue(curPage));     
        }     
    
        if (pageLimit != null) {     
            addParameter("pageLimit", findValue(pageLimit));     
        }     
    
        if (url != null) {     
            addParameter("url", findValue(url, String.class));     
        }     
    
        if (curCssClass != null) {     
            addParameter("curCssClass", findValue(curCssClass,String.class));     
        }     
    
        if (showTotalPage != null) {     
            addParameter("showTotalPage", findValue(showTotalPage,     
                    Boolean.class));     
        }     
    
        if (showTotalRecord != null) {     
            addParameter("showTotalRecord", findValue(showTotalRecord,Boolean.class));     
        }     
    
        if (directJumpType != null) {     
            addParameter("directJumpType", findValue(directJumpType));     
        }     
    
    }     
}   

载自http://code.google.com/p/chinese-exam/source/browse/trunk/exam/src/com/exam/taglib/table/Pager.java?r=2
分享到:
评论

相关推荐

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    Struts2自定义标签

    2. **编写标签处理类(Tag Handler Class)**:这个类继承自Struts2提供的`org.apache.struts2.views.jsp.ui.TagSupport`或`org.apache.struts2.views.jsp.ComponentTagSupport`基类,实现标签的具体逻辑。...

    struts2自定义标签案例详解

    在Struts2中,自定义标签的实现是提升可重用性和简化视图层代码的一个重要特性。下面我们将深入探讨如何在Struts2中实现自定义标签,以及其背后的原理。 自定义标签的创建主要涉及以下三个步骤: 1. **创建taglib...

    struts实现自定义标签

    在 Struts 中,我们可以通过实现 `org.apache.struts.taglib.Tag` 接口来创建自定义标签。 二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或...

    基于struts2 自定义标签 分页

    自定义标签是Struts2的一个重要特性,允许开发者扩展框架的功能,提供更友好的界面元素。在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与...

    tag struts2的自定义标签实例

    在Struts2框架中,自定义标签是扩展和优化应用功能的重要手段,它允许开发者创建符合业务逻辑且可重用的视图组件。本实例将深入探讨如何在Struts2中实现自定义标签,以及其背后的原理和步骤。 首先,自定义标签在...

    Struts2 自定义标签

    在Struts2中,自定义标签是开发者扩展框架功能和简化视图层编码的重要手段。自定义标签允许将复杂的逻辑封装到可重用的组件中,提高代码的可读性和可维护性。 在Struts2中创建自定义标签,通常涉及以下几个步骤: ...

    struts2自定义标签

    Struts2自定义标签是开发Web应用时为了增强框架功能、提高代码复用性和可维护性而创建的自定义HTML标签。这些标签可以扩展Struts2内置的标签库,以满足特定项目的需求。在本例中,我们关注的是实现一个自定义的分页...

    Struts2 自定义下拉框标签Tag(源码)

    自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282

    Struts 2 自定义标签分页

    1. **创建自定义标签库**:首先,我们需要定义一个TLD(Tag Library Descriptor)文件,例如`struts-tags.tld`,在这个文件中声明我们的分页标签。TLD文件定义了标签的名字、属性以及对应的Java类。 2. **编写Java...

    struts中自定义的tag的Java类中如何获得session

    本篇文章将详细探讨如何在Struts自定义标签的Java类中获取`HttpSession`对象,并对其应用场景进行深入分析。 ### 一、Struts自定义标签简介 #### 1.1 Struts自定义标签的作用 在Web应用开发中,经常需要在JSP页面...

    struts1自定义标签

    自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...

    Struts2_自定义标签的方法

    ### Struts2自定义标签详解 #### 一、引言 在Web开发中,Struts2框架...总之,Struts2自定义标签的实现涉及UIBean、JSP Tag和Template三个关键组成部分,通过合理的规划和设计,可以极大地方便Web应用的开发和维护。

    自定义Tag标签的使用、Struts2国际化全局资源配置(老鸟请绕道)

    综上所述,自定义Tag标签与Struts2的国际化功能结合使用,能够有效地提升Web应用的灵活性和可维护性。开发者可以轻松地创建复用组件,同时为不同地区的用户提供本地化的界面。在实际项目中,这是一项非常实用的技术...

    struts2的自定义标签

    自定义标签是Struts2的一个强大特性,允许我们扩展框架的功能,以满足特定项目的需求。在这个例子中,我们将深入理解如何在Struts2中创建一个自定义的`gageTextField`标签。 1. **创建UIBean(UI组件)** UIBean,...

    struts2的自定义标签例子

    下面将详细探讨如何在Struts2中创建和使用自定义标签。 首先,自定义标签是JSP标准标签库(JSTL)的扩展,允许我们定义自己的标签来简化页面编码。在Struts2中,自定义标签通常通过Action类和结果视图来与后台业务...

    Struts2分页-自定义标签-类似百度分页

    通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页功能。 总之,Struts2自定义标签提供了一种灵活的方式,使得开发者能够在JSP页面中方便地实现分页效果。通过自定义标签,我们可以将...

Global site tag (gtag.js) - Google Analytics