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

📄 tabletag.java

📁 dispalytag的源码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/** * 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.io.ByteArrayOutputStream;import java.io.IOException;import java.io.StringWriter;import java.io.Writer;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspTagException;import javax.servlet.jsp.JspWriter;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.collections.IteratorUtils;import org.apache.commons.lang.ObjectUtils;import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.math.LongRange;import org.apache.commons.lang.math.NumberUtils;import org.apache.commons.lang.math.Range;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.displaytag.Messages;import org.displaytag.decorator.TableDecorator;import org.displaytag.exception.ExportException;import org.displaytag.exception.FactoryInstantiationException;import org.displaytag.exception.InvalidTagAttributeValueException;import org.displaytag.exception.WrappedRuntimeException;import org.displaytag.export.BinaryExportView;import org.displaytag.export.ExportView;import org.displaytag.export.ExportViewFactory;import org.displaytag.export.TextExportView;import org.displaytag.model.Cell;import org.displaytag.model.Column;import org.displaytag.model.HeaderCell;import org.displaytag.model.Row;import org.displaytag.model.TableModel;import org.displaytag.pagination.PaginatedList;import org.displaytag.pagination.PaginatedListSmartListHelper;import org.displaytag.pagination.PaginationHelper;import org.displaytag.pagination.SmartListHelper;import org.displaytag.properties.MediaTypeEnum;import org.displaytag.properties.SortOrderEnum;import org.displaytag.properties.TableProperties;import org.displaytag.render.HtmlTableWriter;import org.displaytag.util.CollectionUtil;import org.displaytag.util.DependencyChecker;import org.displaytag.util.Href;import org.displaytag.util.ParamEncoder;import org.displaytag.util.RequestHelper;import org.displaytag.util.RequestHelperFactory;import org.displaytag.util.TagConstants;/** * This tag takes a list of objects and creates a table to display those objects. With the help of column tags, you * simply provide the name of properties (get Methods) that are called against the objects in your list that gets * displayed. This tag works very much like the struts iterator tag, most of the attributes have the same name and * functionality as the struts tag. * @author mraible * @author Fabrizio Giustina * @version $Revision: 1144 $ ($Author: fgiust $) */public class TableTag extends HtmlTableTag{    /**     * name of the attribute added to page scope when exporting, containing an MediaTypeEnum this can be used in column     * content to detect the output type and to return different data when exporting.     */    public static final String PAGE_ATTRIBUTE_MEDIA = "mediaType"; //$NON-NLS-1$    /**     * If this variable is found in the request, assume the export filter is enabled.     */    public static final String FILTER_CONTENT_OVERRIDE_BODY = //    "org.displaytag.filter.ResponseOverrideFilter.CONTENT_OVERRIDE_BODY"; //$NON-NLS-1$    /**     * D1597A17A6.     */    private static final long serialVersionUID = 899149338534L;    /**     * logger.     */    private static Log log = LogFactory.getLog(TableTag.class);    /**     * RequestHelperFactory instance used for link generation.     */    private static RequestHelperFactory rhf;    /**     * Object (collection, list) on which the table is based. This is not set directly using a tag attribute and can be     * cleaned.     */    protected Object list;    // -- start tag attributes --    /**     * Object (collection, list) on which the table is based. Set directly using the "list" attribute or evaluated from     * expression.     */    protected Object listAttribute;    /**     * actual row number, updated during iteration.     */    private int rowNumber = 1;    /**     * name of the object to use for iteration. Can contain expressions.     */    private String name;    /**     * length of list to display.     */    private int length;    /**     * table decorator class name.     */    private String decoratorName;    /**     * page size.     */    private int pagesize;    /**     * list contains only viewable data.     */    private boolean partialList;    /**     * add export links.     */    private boolean export;    /**     * list offset.     */    private int offset;    /**     * Integer containing total size of the data displaytag is paginating     */    private Object size;    /**     * Name of the Integer in some scope containing the size of the data displaytag is paginating     */    private String sizeObjectName;    /**     * sort the full list?     */    private Boolean sortFullTable;    /**     * are we doing any local sorting? (defaults to True)     */    private boolean localSort = true;    /**     * Request uri.     */    private String requestUri;    /**     * Prepend application context to generated links.     */    private boolean dontAppendContext;    /**     * the index of the column sorted by default.     */    private int defaultSortedColumn = -1;    /**     * the sorting order for the sorted column.     */    private SortOrderEnum defaultSortOrder;    /**     * Name of parameter which should not be forwarded during sorting or pagination.     */    private String excludedParams;    /**     * Unique table id.     */    private String uid;    /**     * The variable name to store totals in.     */    private String varTotals;    /**     * Preserve the current page and sort.     */    private boolean keepStatus;    /**     * Clear the current page and sort status.     */    private boolean clearStatus;    /**     * Use form post in paging/sorting links (javascript required).     */    private String form;    // -- end tag attributes --    /**     * table model - initialized in doStartTag().     */    private TableModel tableModel;    /**     * current row.     */    private Row currentRow;    /**     * next row.     */    /**     * Used by various functions when the person wants to do paging - cleaned in doEndTag().     */    private SmartListHelper listHelper;    /**     * base href used for links - set in initParameters().     */    private Href baseHref;    /**     * table properties - set in doStartTag().     */    private TableProperties properties;    /**     * page number - set in initParameters().     */    private int pageNumber = 1;    /**     * Iterator on collection.     */    private Iterator tableIterator;    /**     * export type - set in initParameters().     */    private MediaTypeEnum currentMediaType;    /**     * daAfterBody() has been executed at least once?     */    private boolean doAfterBodyExecuted;    /**     * The param encoder used to generate unique parameter names. Initialized at the first use of encodeParameter().     */    private ParamEncoder paramEncoder;    /**     * Static footer added using the footer tag.     */    private String footer;    /**     * Is this the last iteration we will be performing? We only output the footer on the last iteration.     */    private boolean lastIteration;    /**     * Static caption added using the footer tag.     */    private String caption;    /**     * Child caption tag.     */    private CaptionTag captionTag;    /**     * Included row range. If no rows can be skipped the range is from 0 to Long.MAX_VALUE. Range check should be always     * done using containsLong(). This is an instance of org.apache.commons.lang.math.Range, but it's declared as Object     * to avoid runtime errors while Jasper tries to compile the page and commons lang 2.0 is not available. Commons     * lang version will be checked in the doStartTag() method in order to provide a more user friendly message.     */    private Object filteredRows;    /**     * The paginated list containing the external pagination and sort parameters The presence of this paginated list is     * what determines if external pagination and sorting is used or not.     */    private PaginatedList paginatedList;    /**     * Is this the last iteration?     * @return boolean <code>true</code> if this is the last iteration     */    protected boolean isLastIteration()    {        return this.lastIteration;    }    /**     * Sets the list of parameter which should not be forwarded during sorting or pagination.     * @param value whitespace separated list of parameters which should not be included (* matches all parameters)     */    public void setExcludedParams(String value)    {        this.excludedParams = value;    }    /**     * Sets the content of the footer. Called by a nested footer tag.     * @param string footer content     */    public void setFooter(String string)    {        this.footer = string;        this.tableModel.setFooter(this.footer);    }    /**     * Sets the content of the caption. Called by a nested caption tag.     * @param string caption content     */    public void setCaption(String string)    {        this.caption = string;        this.tableModel.setCaption(this.caption);    }    /**     * Set the child caption tag.     * @param captionTag Child caption tag     */    public void setCaptionTag(CaptionTag captionTag)    {        this.captionTag = captionTag;    }    /**     * Obtain the child caption tag.     * @return The child caption tag     */    public CaptionTag getCaptionTag()    {        return this.captionTag;    }    /**     * Is the current row empty?     * @return true if the current row is empty     */    protected boolean isEmpty()    {        return this.currentRow == null;    }    /**     * Preserve the current page and sort across session?     * @param keepStatus <code>true</code> to preserve paging and sorting     */    public void setKeepStatus(boolean keepStatus)    {        this.keepStatus = keepStatus;    }    /**     * Setter for <code>clearStatus</code>.     * @param clearStatus The clearStatus to set.     */    public void setClearStatus(boolean clearStatus)    {        this.clearStatus = clearStatus;    }    /**     * Setter for <code>form</code>.     * @param post The form to set.     */    public void setForm(String form)    {        this.form = form;    }    /**     * set the Integer containing the total size of the data displaytag is paginating     * @param size Integer containing the total size of the data     */    public void setSize(Object size)    {        if (size instanceof String)        {            this.sizeObjectName = (String) size;        }        else        {            this.size = size;        }    }    /**     * set the name of the Integer in some scope containing the total size of the data to be paginated     * @param sizeObjectName name of the Integer containing the total size of the data to be paginated     */    public void setSizeObjectName(String sizeObjectName)    {        this.sizeObjectName = sizeObjectName;    }    /**     * setter for the "sort" attribute.

⌨️ 快捷键说明

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