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

📄 columntag.java

📁 dispalytag的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /**     * setter for the "scope" tag attribute.     * @param value attribute value     */    public void setScope(String value)    {        this.attributeMap.put(TagConstants.ATTRIBUTE_SCOPE, value);    }    /**     * setter for the "headerScope" tag attribute.     * @param value attribute value     */    public void setHeaderScope(String value)    {        this.headerAttributeMap.put(TagConstants.ATTRIBUTE_SCOPE, value);    }    /**     * setter for the "maxLength" tag attribute.     * @param value attribute value     */    public void setMaxLength(int value)    {        this.maxLength = value;    }    /**     * setter for the "maxWords" tag attribute.     * @param value attribute value     */    public void setMaxWords(int value)    {        this.maxWords = value;    }    /**     * setter for the "style" tag attribute.     * @param value attribute value     */    public void setStyle(String value)    {        this.attributeMap.put(TagConstants.ATTRIBUTE_STYLE, value);    }    /**     * setter for the "class" tag attribute.     * @param value attribute value     */    public void setClass(String value)    {        this.attributeMap.put(TagConstants.ATTRIBUTE_CLASS, new MultipleHtmlAttribute(value));    }    /**     * setter for the "headerClass" tag attribute.     * @param value attribute value     */    public void setHeaderClass(String value)    {        this.headerAttributeMap.put(TagConstants.ATTRIBUTE_CLASS, new MultipleHtmlAttribute(value));    }    /**     * setter for the "decorator" tag attribute.     * @param value attribute value     */    public void setDecorator(String value)    {        this.decorator = value;    }    /**     * setter for the "sortProperty" tag attribute.     * @param value attribute value     */    public void setSortProperty(String value)    {        this.sortProperty = value;    }    /**     * Looks up the parent table tag.     * @return a table tag instance.     */    protected TableTag getTableTag()    {        return (TableTag) findAncestorWithClass(this, TableTag.class);    }    /**     * Tag setter.     * @param media the space delimited list of supported types     */    public void setMedia(String media)    {        MediaUtil.setMedia(this, media);    }    /**     * @see org.displaytag.util.MediaUtil.SupportsMedia#setSupportedMedia(java.util.List)     */    public void setSupportedMedia(List media)    {        this.supportedMedia = media;    }    /**     * @see org.displaytag.util.MediaUtil.SupportsMedia#getSupportedMedia()     */    public List getSupportedMedia()    {        return this.supportedMedia;    }    /**     * sets the name given to the server when sorting this column     * @param sortName name given to the server to sort this column     */    public void setSortName(String sortName)    {        this.sortName = sortName;    }    /**     * sets the sorting order for the sorted column.     * @param value "ascending" or "descending"     * @throws InvalidTagAttributeValueException if value is not one of "ascending" or "descending"     */    public void setDefaultorder(String value) throws InvalidTagAttributeValueException    {        this.defaultorder = SortOrderEnum.fromName(value);        if (this.defaultorder == null)        {            throw new InvalidTagAttributeValueException(getClass(), "defaultorder", value); //$NON-NLS-1$        }    }    /**     * Passes attribute information up to the parent TableTag.     * <p>     * When we hit the end of the tag, we simply let our parent (which better be a TableTag) know what the user wants to     * do with this column. We do that by simple registering this tag with the parent. This tag's only job is to hold     * the configuration information to describe this particular column. The TableTag does all the work.     * </p>     * @return int     * @throws JspException if this tag is being used outside of a &lt;display:list...&gt; tag.     * @see javax.servlet.jsp.tagext.Tag#doEndTag()     */    public int doEndTag() throws JspException    {        TableTag tableTag = getTableTag();        MediaTypeEnum currentMediaType = (MediaTypeEnum) this.pageContext.findAttribute(TableTag.PAGE_ATTRIBUTE_MEDIA);        if (currentMediaType != null && !MediaUtil.availableForMedia(this, currentMediaType))        {            if (log.isDebugEnabled())            {                log.debug("skipping column body, currentMediaType=" + currentMediaType);            }            return SKIP_BODY;        }        // add column header only once        if (tableTag.isFirstIteration())        {            addHeaderToTable(tableTag);        }        if (!tableTag.isIncludedRow())        {            return super.doEndTag();        }        Cell cell = null;        if (this.property == null && this.value != null)        {            cell = new Cell(value);        }        else if (this.property == null && this.bodyContent != null)        {            cell = new Cell(this.bodyContent.getString());        }        Object rowStyle = this.attributeMap.get(TagConstants.ATTRIBUTE_STYLE);        Object rowClass = this.attributeMap.get(TagConstants.ATTRIBUTE_CLASS);        if (rowStyle != null || rowClass != null)        {            HtmlAttributeMap perRowValues = new HtmlAttributeMap();            if (rowStyle != null)            {                perRowValues.put(TagConstants.ATTRIBUTE_STYLE, rowStyle);            }            if (rowClass != null)            {                perRowValues.put(TagConstants.ATTRIBUTE_CLASS, rowClass);            }            if (cell == null)            {                cell = new Cell(null);            }            cell.setPerRowAttributes(perRowValues);        }        tableTag.addCell(cell != null ? cell : Cell.EMPTY_CELL);        // cleanup non-attribute variables        this.alreadySorted = false;        return super.doEndTag();    }    /**     * Adds the current header to the table model calling addColumn in the parent table tag. This method should be     * called only at first iteration.     * @param tableTag parent table tag     * @throws DecoratorInstantiationException for error during column decorator instantiation     * @throws ObjectLookupException for errors in looking up values     */    private void addHeaderToTable(TableTag tableTag) throws DecoratorInstantiationException, ObjectLookupException    {        // don't modify "title" directly        String evalTitle = this.title;        // title has precedence over titleKey        if (evalTitle == null && (this.titleKey != null || this.property != null))        {            // handle title i18n            evalTitle = tableTag.getProperties().geResourceProvider().getResource(                this.titleKey,                this.property,                tableTag,                this.pageContext);        }        HeaderCell headerCell = new HeaderCell();        headerCell.setHeaderAttributes((HtmlAttributeMap) this.headerAttributeMap.clone());        headerCell.setHtmlAttributes((HtmlAttributeMap) this.attributeMap.clone());        headerCell.setTitle(evalTitle);        headerCell.setSortable(this.sortable);        List decorators = new ArrayList();        // handle multiple chained decorators, whitespace separated        if (StringUtils.isNotEmpty(this.decorator))        {            String[] decoratorNames = StringUtils.split(this.decorator);            for (int j = 0; j < decoratorNames.length; j++)            {                decorators.add(tableTag.getProperties().getDecoratorFactoryInstance().loadColumnDecorator(                    this.pageContext,                    decoratorNames[j]));            }        }        // "special" decorators        if (this.escapeXml)        {            decorators.add(EscapeXmlColumnDecorator.INSTANCE);        }        if (this.autolink)        {            decorators.add(AutolinkColumnDecorator.INSTANCE);        }        if (StringUtils.isNotBlank(this.format))        {            decorators.add(new MessageFormatColumnDecorator(this.format, tableTag.getProperties().getLocale()));        }        headerCell.setColumnDecorators((DisplaytagColumnDecorator[]) decorators            .toArray(new DisplaytagColumnDecorator[decorators.size()]));        headerCell.setBeanPropertyName(this.property);        headerCell.setShowNulls(this.nulls);        headerCell.setMaxLength(this.maxLength);        headerCell.setMaxWords(this.maxWords);        headerCell.setGroup(this.group);        headerCell.setSortProperty(this.sortProperty);        headerCell.setTotaled(this.totaled);        Comparator headerComparator = (comparator != null) ? comparator : tableTag.getProperties().getDefaultComparator();        headerCell.setComparator(headerComparator);        headerCell.setDefaultSortOrder(this.defaultorder);        headerCell.setSortName(this.sortName);        // href and parameter, create link        if (this.href != null)        {            Href colHref;            // empty base url, use href with parameters from parent table            if (StringUtils.isEmpty(this.href.getBaseUrl()))            {                colHref = (Href) tableTag.getBaseHref().clone();            }            else            {                colHref = (Href) this.href.clone();            }            if (this.paramId != null)            {                // parameter value is in a different object than the iterated one                if (this.paramName != null || this.paramScope != null)                {                    // create a complete string for compatibility with previous version before expression evaluation.                    // this approach is optimized for new expressions, not for previous property/scope parameters                    StringBuffer expression = new StringBuffer();                    // append scope                    if (StringUtils.isNotBlank(this.paramScope))                    {                        expression.append(this.paramScope).append("Scope.");                    }                    // base bean name                    if (this.paramId != null)                    {                        expression.append(this.paramName);                    }                    else                    {                        expression.append(tableTag.getName());                    }                    // append property                    if (StringUtils.isNotBlank(this.paramProperty))                    {                        expression.append('.').append(this.paramProperty);                    }                    // evaluate expression.                    // note the value is fixed, not based on any object created during iteration                    // this is here for compatibility with the old version mainly                    Object paramValue = tableTag.evaluateExpression(expression.toString());                    // add parameter                    colHref.addParameter(this.paramId, paramValue);                }                else                {                    // set id                    headerCell.setParamName(this.paramId);                    // set property                    headerCell.setParamProperty(this.paramProperty);                }            }            // sets the base href            headerCell.setHref(colHref);        }        tableTag.addColumn(headerCell);        if (log.isDebugEnabled())        {            log.debug("columnTag.addHeaderToTable() :: first iteration - adding header " + headerCell);        }    }    /**     * @see javax.servlet.jsp.tagext.Tag#release()     */    public void release()    {        super.release();        this.attributeMap.clear();        this.autolink = false;        this.decorator = null;        this.group = -1;        this.headerAttributeMap.clear();        this.href = null;        this.maxLength = 0;        this.maxWords = 0;        this.nulls = false;        this.paramId = null;        this.paramName = null;        this.paramProperty = null;        this.paramScope = null;        this.property = null;        this.sortable = false;        this.sortName = null;        this.supportedMedia = null;        this.title = null;        this.titleKey = null;        this.sortProperty = null;        this.comparator = null;        this.defaultorder = null;        this.escapeXml = false;        this.format = null;        this.value = null;        this.totaled = false;    }    /**     * @see javax.servlet.jsp.tagext.Tag#doStartTag()     */    public int doStartTag() throws JspException    {        TableTag tableTag = getTableTag();        if (tableTag == null)        {            throw new TagStructureException(getClass(), "column", "table");        }        // If the list is empty, do not execute the body; may result in NPE        if (tableTag.isEmpty() || !tableTag.isIncludedRow())        {            return SKIP_BODY;        }        MediaTypeEnum currentMediaType = (MediaTypeEnum) this.pageContext.findAttribute(TableTag.PAGE_ATTRIBUTE_MEDIA);        if (!MediaUtil.availableForMedia(this, currentMediaType))        {            return SKIP_BODY;        }        return super.doStartTag();    }    /**     * @see java.lang.Object#toString()     */    public String toString()    {        return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) //            .append("bodyContent", this.bodyContent) //$NON-NLS-1$            .append("group", this.group) //$NON-NLS-1$            .append("maxLength", this.maxLength) //$NON-NLS-1$            .append("decorator", this.decorator) //$NON-NLS-1$            .append("href", this.href) //$NON-NLS-1$            .append("title", this.title) //$NON-NLS-1$            .append("paramScope", this.paramScope) //$NON-NLS-1$            .append("property", this.property) //$NON-NLS-1$            .append("paramProperty", this.paramProperty) //$NON-NLS-1$            .append("headerAttributeMap", this.headerAttributeMap) //$NON-NLS-1$            .append("paramName", this.paramName) //$NON-NLS-1$            .append("autolink", this.autolink) //$NON-NLS-1$            .append("format", this.format) //$NON-NLS-1$            .append("nulls", this.nulls) //$NON-NLS-1$            .append("maxWords", this.maxWords) //$NON-NLS-1$            .append("attributeMap", this.attributeMap) //$NON-NLS-1$            .append("sortable", this.sortable) //$NON-NLS-1$            .append("paramId", this.paramId) //$NON-NLS-1$            .append("alreadySorted", this.alreadySorted) //$NON-NLS-1$            .append("sortProperty", this.sortProperty) //$NON-NLS-1$            .append("defaultSortOrder", this.defaultorder) //$NON-NLS-1$            .toString();    }}

⌨️ 快捷键说明

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