⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 columntag.java

📁 dispalytag的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * *      http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */package org.displaytag.tags;import java.text.Collator;import java.util.ArrayList;import java.util.Comparator;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.BodyTagSupport;import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.builder.ToStringBuilder;import org.apache.commons.lang.builder.ToStringStyle;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.displaytag.decorator.AutolinkColumnDecorator;import org.displaytag.decorator.DisplaytagColumnDecorator;import org.displaytag.decorator.EscapeXmlColumnDecorator;import org.displaytag.decorator.MessageFormatColumnDecorator;import org.displaytag.exception.DecoratorInstantiationException;import org.displaytag.exception.InvalidTagAttributeValueException;import org.displaytag.exception.ObjectLookupException;import org.displaytag.exception.TagStructureException;import org.displaytag.model.Cell;import org.displaytag.model.DefaultComparator;import org.displaytag.model.HeaderCell;import org.displaytag.properties.MediaTypeEnum;import org.displaytag.properties.SortOrderEnum;import org.displaytag.util.DefaultHref;import org.displaytag.util.Href;import org.displaytag.util.HtmlAttributeMap;import org.displaytag.util.MediaUtil;import org.displaytag.util.MultipleHtmlAttribute;import org.displaytag.util.TagConstants;/** * <p> * This tag works hand in hand with the TableTag to display a list of objects. This describes a column of data in the * TableTag. There can be any number of columns that make up the list. * </p> * <p> * This tag does no work itself, it is simply a container of information. The TableTag does all the work based on the * information provided in the attributes of this tag. * <p> * @author mraible * @author Fabrizio Giustina * @version $Revision: 1097 $ ($Author: rapruitt $) */public class ColumnTag extends BodyTagSupport implements MediaUtil.SupportsMedia{    /**     * D1597A17A6.     */    private static final long serialVersionUID = 899149338534L;    /**     * logger.     */    private static Log log = LogFactory.getLog(ColumnTag.class);    /**     * html pass-through attributes for cells.     */    private HtmlAttributeMap attributeMap = new HtmlAttributeMap();    /**     * html pass-through attributes for cell headers.     */    private HtmlAttributeMap headerAttributeMap = new HtmlAttributeMap();    /**     * the property method that is called to retrieve the information to be displayed in this column. This method is     * called on the current object in the iteration for the given row. The property format is in typical struts format     * for properties (required)     */    private String property;    /**     * the title displayed for this column. if this is omitted then the property name is used for the title of the     * column (optional).     */    private String title;    /**     * by default, null values don't appear in the list, by setting viewNulls to 'true', then null values will appear as     * "null" in the list (mostly useful for debugging) (optional).     */    private boolean nulls;    /**     * is the column sortable?     */    private boolean sortable;    /**     * Name given to the server when sorting this column.     */    private String sortName;    /**     * Defalt sort order for this column.     */    private SortOrderEnum defaultorder;    /**     * The comparator to use when sorting this column.     */    private Comparator comparator;    /**     * if set to true, then any email addresses and URLs found in the content of the column are automatically converted     * into a hypertext link.     */    private boolean autolink;    /**     * Automatically escape column content for html and xml media.     */    private boolean escapeXml;    /**     * A MessageFormat patter that will be used to decorate objects in the column. Can be used as a "shortcut" for     * simple column decorations.     */    private String format;    /**     * the grouping level (starting at 1 and incrementing) of this column (indicates if successive contain the same     * values, then they should not be displayed). The level indicates that if a lower level no longer matches, then the     * matching for this higher level should start over as well. If this attribute is not included, then no grouping is     * performed. (optional)     */    private int group = -1;    /**     * if this attribute is provided, then the data that is shown for this column is wrapped inside a &lt;a href&gt; tag     * with the url provided through this attribute. Typically you would use this attribute along with one of the     * struts-like param attributes below to create a dynamic link so that each row creates a different URL based on the     * data that is being viewed. (optional)     */    private Href href;    /**     * The name of the request parameter that will be dynamically added to the generated href URL. The corresponding     * value is defined by the paramProperty and (optional) paramName attributes, optionally scoped by the paramScope     * attribute. (optional)     */    private String paramId;    /**     * The name of a JSP bean that is a String containing the value for the request parameter named by paramId (if     * paramProperty is not specified), or a JSP bean whose property getter is called to return a String (if     * paramProperty is specified). The JSP bean is constrained to the bean scope specified by the paramScope property,     * if it is specified. If paramName is omitted, then it is assumed that the current object being iterated on is the     * target bean. (optional)     */    private String paramName;    /**     * The name of a property of the bean specified by the paramName attribute (or the current object being iterated on     * if paramName is not provided), whose return value must be a String containing the value of the request parameter     * (named by the paramId attribute) that will be dynamically added to this href URL. (optional)     * @deprecated use Expressions in paramName     */    private String paramProperty;    /**     * The scope within which to search for the bean specified by the paramName attribute. If not specified, all scopes     * are searched. If paramName is not provided, then the current object being iterated on is assumed to be the target     * bean. (optional)     * @deprecated use Expressions in paramName     */    private String paramScope;    /**     * If this attribute is provided, then the column's displayed is limited to this number of characters. An elipse     * (...) is appended to the end if this column is linked, and the user can mouseover the elipse to get the full     * text. (optional)     */    private int maxLength;    /**     * If this attribute is provided, then the column's displayed is limited to this number of words. An elipse (...) is     * appended to the end if this column is linked, and the user can mouseover the elipse to get the full text.     * (optional)     */    private int maxWords;    /**     * a class that should be used to "decorate" the underlying object being displayed. If a decorator is specified for     * the entire table, then this decorator will decorate that decorator. (optional)     */    private String decorator;    /**     * is the column already sorted?     */    private boolean alreadySorted;    /**     * The media supported attribute.     */    private List supportedMedia;    /**     * Property in a resource bundle to be used as the title for the column.     */    private String titleKey;    /**     * The name of the bean property if a decorator is used and sorting need to be still on on the property itself.     * Useful for displaying data with links but sorting on original value.     */    private String sortProperty;    /**     * Should the value of the column be summed? Requires that the value of the column be convertible to a Number.     */    private boolean totaled;    /**     * Static value for this cell, equivalent to column body.     */    private Object value;    /**     * Setter for totals.     * @param totals the value     */    public void setTotal(boolean totals)    {        this.totaled = totals;    }    /**     * setter for the "property" tag attribute.     * @param value attribute value     */    public void setProperty(String value)    {        this.property = value;    }    /**     * setter for the "value" tag attribute.     * @param value attribute value     */    public void setValue(Object value)    {        this.value = value;    }    /**     * Set the comparator, classname or object.     * @param comparatorObj the comparator, classname or object     */    public void setComparator(Object comparatorObj)    {        // @todo don't do this! Setters should remains simple setters and any evaluation should be done in doEndTag()!        if (comparatorObj instanceof Comparator)        {            this.comparator = (Comparator) comparatorObj;        }        else if (comparatorObj instanceof String)        {            String comparatorClassname = (String) comparatorObj;            Class compClass;            try            {                compClass = Thread.currentThread().getContextClassLoader().loadClass(comparatorClassname);            }            catch (ClassNotFoundException e)            {                throw new RuntimeException("InstantiationException setting column comparator as "                    + comparatorClassname                    + ": "                    + e.getMessage(), e);            }            try            {                this.comparator = (Comparator) compClass.newInstance();            }            catch (InstantiationException e)            {                throw new RuntimeException("InstantiationException setting column comparator as "                    + comparatorClassname                    + ": "                    + e.getMessage(), e);            }            catch (IllegalAccessException e)            {                throw new RuntimeException("IllegalAccessException setting column comparator as "                    + comparatorClassname                    + ": "                    + e.getMessage(), e);            }        }        else        {            throw new IllegalArgumentException("Value for comparator: "                + comparatorObj                + " of type "                + comparatorObj.getClass().getName());        }    }    /**     * setter for the "title" tag attribute.     * @param value attribute value     */    public void setTitle(String value)    {        this.title = value;    }    /**     * setter for the "format" tag attribute.     * @param value attribute value     */    public void setFormat(String value)    {        this.format = value;    }    /**     * setter for the "nulls" tag attribute.     * @param value attribute value     */    public void setNulls(boolean value)    {        this.nulls = value;    }    /**     * setter for the "sortable" tag attribute.     * @param value attribute value     */    public void setSortable(boolean value)    {        this.sortable = value;    }    /**     * setter for the "autolink" tag attribute.     * @param value attribute value     */    public void setAutolink(boolean value)    {        this.autolink = value;    }    /**     * setter for the "escapeXml" tag attribute.     * @param value attribute value     */    public void setEscapeXml(boolean value)    {        this.escapeXml = value;    }    /**     * setter for the "group" tag attribute.     * @param value attribute value     */    public void setGroup(int value)    {        this.group = value;    }    /**     * setter for the "titleKey" tag attribute.     * @param value property name     */    public void setTitleKey(String value)    {        this.titleKey = value;    }    /**     * setter for the "href" tag attribute.     * @param value attribute value     */    public void setHref(String value)    {        // call encodeURL to preserve session id when cookies are disabled        String encodedHref = ((HttpServletResponse) this.pageContext.getResponse()).encodeURL(StringUtils            .defaultString(value));        this.href = new DefaultHref(encodedHref);    }    /**     * setter for the "url" tag attribute. This has the same meaning of href, but prepends the context path to the given     * URI.     * @param value attribute value     */    public void setUrl(String value)    {        HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();        // call encodeURL to preserve session id when cookies are disabled        String encodedHref = ((HttpServletResponse) this.pageContext.getResponse()).encodeURL(StringUtils            .defaultString(req.getContextPath() + value));        this.href = new DefaultHref(encodedHref);    }    /**     * setter for the "paramId" tag attribute.     * @param value attribute value     */    public void setParamId(String value)    {        this.paramId = value;    }    /**     * setter for the "paramName" tag attribute.     * @param value attribute value     */    public void setParamName(String value)    {        this.paramName = value;    }    /**     * setter for the "paramProperty" tag attribute.     * @param value attribute value     */    public void setParamProperty(String value)    {        this.paramProperty = value;    }    /**     * setter for the "paramScope" tag attribute.     * @param value attribute value     */    public void setParamScope(String value)    {        this.paramScope = value;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -