自定义标签 排序标签


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;
}


}


这个写得比较差,懒得改了,已经可以用了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值