`
dongjun316
  • 浏览: 32729 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

自定义标签 排序标签

阅读更多
package com.toolkit.taglibs;

import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.Tag;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.components.Component;
import org.apache.struts2.views.jsp.ComponentTagSupport;

import com.opensymphony.xwork2.util.ValueStack;

/**
 * 
 * @author JohnCheng
 * @version 1.0.0
 * @since 2010-01-19
 */
public class SortTag extends ComponentTagSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4137098453204513199L;

	public static Log log = LogFactory.getLog(SortTag.class);
	
	private final static String DESC = "desc";
	
	private final static String ASC = "asc";

	private String field;
	
	private String action = "";
	
	private boolean isAsc = false;
	
	private boolean matched = false;
	
	private JspWriter writer;

	public int doStartTag() throws JspException {

		StringBuffer sb = new StringBuffer(action);//current page
		
        sb.append("?field=");
        
        sb.append( field );
        
        sb.append("&sort=");
        
        String sort = pageContext.getRequest().getParameter("sort");
        
        isAsc = ASC.equalsIgnoreCase(sort);
        
        sb.append(isAsc ? DESC : ASC);
        
        matched = field.equalsIgnoreCase( pageContext.getRequest().getParameter("field") );
        
		Map parameters = pageContext.getRequest().getParameterMap();
		
        Iterator iterator = parameters.keySet().iterator();
        
        HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
        
        
        try{
		        while (iterator.hasNext()) {
		            String key = (String) iterator.next();
		            if("field".equals(key) || "sort".equals(key) || "random".equals(key)){
		            	continue;
		            }
		            sb.append("&")
		            .append(key)
		            .append("=")
		            .append(URLEncoder.encode( ((String[])parameters.get(key))[0],"UTF-8"));
		        }
        }catch(Exception ex){
        	log.error(ex);
        }
        writer = pageContext.getOut();
        try {
        	writer.write("<a href=\""+sb.toString() + "\" style=\"text-decoration: none;color: #FFFFFF; font-size: 12px;font-weight: bold;\" title=\"点击排序\">" );
        }catch(Exception ex ){
        	log.error(ex);
        }
		return Tag.EVAL_BODY_INCLUDE;
	}

@Override
public int doEndTag() throws JspException {
	String root = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
	try{
	if(matched){
		if(isAsc){
			this.writer.write(" <img border='0' src='"+root+"/images/asc.gif'/>");
		}else{
			writer.write(" <img border='0' src='"+root+"/images/desc.gif'/>");
		}
	}
	writer.write("</a>");
	}catch(Exception ex){
		log.error(ex);
	}
	return Tag.EVAL_BODY_INCLUDE;
}

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public String getField() {
		return field;
	}

	public void setField(String field) {
		this.field = field;
	}

	@Override
	public Component getBean(ValueStack arg0, HttpServletRequest arg1,
			HttpServletResponse arg2) {
		
		return null;
	}


}


这个写得比较差,懒得改了,已经可以用了。
分享到:
评论

相关推荐

    自定义标签

    - 数据绑定:比如,一个自定义标签可以用来显示数据库查询结果,处理分页和排序等复杂逻辑。 - 用户界面组件:例如,创建一个日期选择器标签,封装JavaScript和CSS,使日期选择功能易于使用和维护。 - 权限控制:...

    自定义标签学习笔记

    ### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...

    仿京东商品评价自定义标签

    京东作为国内知名的电商平台,其商品评价系统独具特色,特别是自定义标签功能,为用户提供了一种直观、简洁的方式来理解和评估商品质量。本教程将深入探讨如何仿照京东的商品评价体系,实现自定义标签功能。 一、...

    Dojo 自定义后台排序

    "Dojo 自定义后台排序"是一个关于如何利用Dojo框架实现后台数据排序的专题。Dojo是一个强大的JavaScript库,提供了丰富的功能和工具,帮助开发者构建富交互式的Web应用。在本主题中,我们将深入探讨Dojo的排序机制,...

    swift-自定义选择标签支持拖拽排序选中取消

    在Swift编程环境中,自定义选择标签是一种常见的UI需求,它能提供用户友好的交互体验,让用户可以方便地通过拖拽来排序标签,并且能够轻松选中或取消选中标签。这个场景通常涉及到自定义控件的创建,以及手势识别和...

    android tablayout重新排序以及拖动选择标签

    本文将深入探讨如何实现TabLayout的标签拖动选择和重新排序功能,以达到类似某些视频网站首页导航栏的效果。 首先,我们需要在布局XML文件中添加TabLayout,并配置好相关的属性。例如: ```xml android:id="@+id...

    java自定义分页标签

    3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,然后就可以像使用其他JSTL标签一样使用自定义分页标签。例如: ```jsp ${totalItems}" itemsPerPage="10" /&gt; ``` 4. ...

    JSP GridView --使用自定义标签实现ASP.NET的控件

    - 排序:用户可能需要根据列头进行排序,自定义标签需要处理这些事件并重新排序数据。 - 编辑和删除:如果需要提供编辑和删除功能,标签需要提供交互接口,如按钮点击事件,然后调用后台服务来执行相应的操作。 ...

    vue+element-ui实现穿梭框数据自定义排序

    这里,`sourceData`是包含待排序数据的数组,`label: 'name'`表示数据对象中的哪个字段作为展示的标签,`titles`定义了穿梭框两侧的标题,`v-model`用于双向绑定选中的数据,而`@change`事件会在数据发生变化时触发...

    Ruby-ActsAsTaggableOnRails应用程序标签插件允许自定义标签在动态环境中

    Ruby-ActsAsTaggableOn 是一个非常流行的Rails插件,用于在动态环境中实现自定义标签功能。这个插件使得在你的Rails应用中添加标签系统变得简单高效,它提供了灵活的接口来管理和操作标签数据。 首先,让我们深入...

    MDITabControl(VB) 自定义标签页

    这可能包括设置标签的样式、颜色、字体,以及是否允许用户重新排序标签等。 6. **性能优化**:当有大量子窗口时,需要考虑性能问题。例如,只在当前活动的子窗口上绘制,以减少资源消耗。 7. **数据交换**:在MDI...

    给WPS表格设置自定义排序.docx

    3. **选择自定义序列**:在弹出的选项窗口中找到并选择“自定义序列”标签页。 4. **输入自定义序列**:在自定义序列列表右侧的输入框中粘贴刚刚复制的序列。 5. **添加序列**:点击“添加”按钮将新序列保存到...

    DisplayTag1.2 扩展(自定义分页、排序、导出、页面导航)

    DisplayTag是个很好的jsp标签,目前最新版本为1.2,支持了自定义分页,解决了之前版本每次查询都把全部数据查出的低效率做法。但是DisplayTag默认是通过url传参,以及分页导航不灵活给人们带来了不少麻烦。鉴于此...

    自定义table标签和数据展现控件(源码)

    特点 在上个table标签的基础上修改了部分代码,支持firefox. 新增数据展现控件以便定制更加复杂的table. 1、JSP2.0标准自定义标签 2、支持数据库后台翻页 3、支持排序 4、支持firfox 4、使用...

    ios-仿新浪上传图片手势排序,删除,多张照片选择,自定义标签.zip

    类似于新浪图片上传的效果。可以手机摄像头和相册多张选择图片。相册图片实现拖动拖动效果。照片的删除,以及自定义标签的选择效果。 下载地址https://github.com/liuhuan3344/photo

    PB数据窗口排序控件

    在传统的数据窗口中,用户通常需要编写特定的脚本来实现字段的排序功能,但通过使用这个自定义排序控件,用户只需点击数据窗口中的字段名,系统就能自动进行升序或降序排序,极大地提高了开发效率和用户体验。...

    易语言自定义类型数组排序源码

    易语言,作为一款中国本土开发的简单易学的编程工具,也提供了处理数组的能力,包括对自定义类型的数组进行排序。本篇将深入探讨易语言中自定义类型数组排序的原理、实现方法以及源码解析。 易语言的核心理念是“易...

    jQuery自定义添加标签相关插件.rar

    3. **样式定制**:允许开发者自定义标签的外观,如颜色、大小、边框等,以符合网站的风格。 4. **拖放排序**:用户可以通过拖放操作改变标签的顺序。 5. **管理功能**:提供删除或编辑已有标签的功能。 6. **数据...

    给office软件添加TAB标签页Office Tab Enterprise v11.00.rar

    安装了Office Tab后能够轻松实现给Office添加标签页效果,它并不是一个独立的应用程序,而是一款Office的扩展插件,支持Office 2003、2007、2013实现多窗口标签式浏览,还支持自定义标签外观、标签显示位置、标签...

Global site tag (gtag.js) - Google Analytics