/**
* 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.el;
import javax.servlet.jsp.JspException;
/**
* Adds EL support to displaytag's TableTag.
* @author Tim McCune
* @author Fabrizio Giustina
* @version $Revision: 1007 $ ($Author: fgiust $)
*/
public class ELTableTag extends org.displaytag.tags.TableTag
{
/**
* D1597A17A6.
*/
private static final long serialVersionUID = 899149338534L;
/**
* Expression for the "class" tag attribute.
*/
private String classExpr;
/**
* Expression for the "cellpadding" tag attribute.
*/
private String cellpaddingExpr;
/**
* Expression for the "cellspacing" tag attribute.
*/
private String cellspacingExpr;
/**
* Expression for the "decorator" tag attribute.
*/
private String decoratorExpr;
/**
* Expression for the "defaultsort" tag attribute.
*/
private String defaultsortExpr;
/**
* Expression for the "defaultorder" tag attribute.
*/
private String defaultorderExpr;
/**
* Expression for the "export" tag attribute.
*/
private String exportExpr;
/**
* Expression for the "frame" tag attribute.
*/
private String frameExpr;
/**
* Expression for the "length" tag attribute.
*/
private String lengthExpr;
/**
* Expression for the "name" tag attribute.
*/
private String nameExpr;
/**
* Expression for the "offset" tag attribute.
*/
private String offsetExpr;
/**
* Expression for the "pagesize" tag attribute.
*/
private String pagesizeExpr;
/**
* Expression for the "partialList" tag attribute.
*/
private String partialListExpr;
/**
* Expression for the "requestURI" tag attribute.
*/
private String requestURIExpr;
/**
* Expression for the "requestURIcontext" tag attribute.
*/
private String requestURIcontextExpr;
/**
* Expression for the "rules" tag attribute.
*/
private String rulesExpr;
/**
* Expression for the "size" tag attribute
*/
private String sizeExpr;
/**
* Expression for the "sort" tag attribute.
*/
private String sortExpr;
/**
* Expression for the "style" tag attribute.
*/
private String styleExpr;
/**
* Expression for the "summary" tag attribute.
*/
private String summaryExpr;
/**
* Expression for the "excludedParams" tag attribute.
*/
private String excludedParamsExpr;
/**
* Expression for the "id" tag attribute.
*/
private String idExpr;
/**
* Expression for the "htmlId" tag attribute.
*/
private String htmlIdExpr;
/**
* @see org.displaytag.tags.TableTag#setUid(java.lang.String)
*/
public void setUid(String value)
{
idExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setCellpadding(java.lang.String)
* @param value EL expression for attribute value
*/
public void setCellpadding(String value)
{
cellpaddingExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setStyle(java.lang.String)
* @param value EL expression for attribute value
*/
public void setStyle(String value)
{
styleExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setSummary(java.lang.String)
* @param value EL expression for attribute value
*/
public void setSummary(String value)
{
summaryExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setCellspacing(java.lang.String)
* @param value EL expression for attribute value
*/
public void setCellspacing(String value)
{
cellspacingExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setClass(java.lang.String)
* @param value EL expression for attribute value
*/
public void setClass(String value)
{
classExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setDecorator(java.lang.String)
* @param value EL expression for attribute value
*/
public void setDecorator(String value)
{
decoratorExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setDefaultsort(int)
* @param value EL expression for attribute value
*/
public void setDefaultsort(String value)
{
defaultsortExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setDefaultorder(java.lang.String)
* @param value EL expression for attribute value
*/
public void setDefaultorder(String value)
{
defaultorderExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setExport(boolean)
* @param value EL expression for attribute value
*/
public void setExport(String value)
{
exportExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setFrame(java.lang.String)
* @param value EL expression for attribute value
*/
public void setFrame(String value)
{
frameExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setLength(int)
* @param value EL expression for attribute value
*/
public void setLength(String value)
{
lengthExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setName(java.lang.Object)
* @param value EL expression for attribute value
*/
public void setName(String value)
{
nameExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setOffset(int)
* @param value EL expression for attribute value
*/
public void setOffset(String value)
{
offsetExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setPagesize(int)
* @param value EL expression for attribute value
*/
public void setPagesize(String value)
{
pagesizeExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setRequestURI(java.lang.String)
* @param value EL expression for attribute value
*/
public void setRequestURI(String value)
{
requestURIExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setRequestURIcontext(boolean)
* @param value EL expression for attribute value
*/
public void setRequestURIcontext(String value)
{
requestURIcontextExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setRules(java.lang.String)
* @param value EL expression for attribute value
*/
public void setRules(String value)
{
rulesExpr = value;
}
/**
* @param value EL expression for attribute value
* @see org.displaytag.tags.TableTag#setSize(java.lang.String)
*/
public void setSize(String value)
{
sizeExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setSort(java.lang.String)
* @param value EL expression for attribute value
*/
public void setSort(String value)
{
sortExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setExcludedParams(java.lang.String)
* @param value EL expression for attribute value
*/
public void setExcludedParams(String value)
{
excludedParamsExpr = value;
}
/**
* @see org.displaytag.tags.TableTag#setHtmlId(java.lang.String)
* @param value EL expression for attribute value
*/
public void setHtmlId(String value)
{
htmlIdExpr = value;
}
/**
* @see javax.servlet.jsp.tagext.Tag#doStartTag()
*/
public int doStartTag() throws JspException
{
evaluateExpressions();
return super.doStartTag();
}
/**
* Evaluates EL expressions and sets values in the parent Table Tag.
* @throws JspException for errors during evaluation
*/
private void evaluateExpressions() throws JspException
{
ExpressionEvaluator eval = new ExpressionEvaluator(this, pageContext);
if (idExpr != null)
{
super.setUid(eval.evalString("uid", idExpr)); //$NON-NLS-1$
}
if (htmlIdExpr != null)
{
super.setHtmlId(eval.evalString("htmlId", htmlIdExpr)); //$NON-NLS-1$
}
if (cellpaddingExpr != null)
{
super.setCellpadding(eval.evalString("cellpadding", cellpaddingExpr)); //$NON-NLS-1$
}
if (cellspacingExpr != null)
{
super.setCellspacing(eval.evalString("cellspacing", cellspacingExpr)); //$NON-NLS-1$
}
if (classExpr != null)
{
super.setClass(eval.evalString("class", classExpr)); //$NON-NLS-1$
}
if (decoratorExpr != null)
{
super.setDecorator(eval.evalString("decorator", decoratorExpr)); //$NON-NLS-1$
}
if (defaultorderExpr != null)
{
super.setDefaultorder(eval.evalString("defaultorder", defaultorderExpr)); //$NON-NLS-1$
}
if (excludedParamsExpr != null)
{
super.setExcludedParams(eval.evalString("excludedParams", excludedParamsExpr)); //$NON-NLS-1$
}
if (defaultsortExpr != null)
{
super.setDefaultsort(eval.evalInt("defaultsort", defaultsortExpr)); //$NON-NLS-1$
}
if (exportExpr != null)
{
super.setExport(eval.evalBoolean("export", exportExpr)); //$NON-NLS-1$
}
if (frameExpr != null)
{
super.setFrame(eval.evalString("frame", frameExpr)); //$NON-NLS-1$
}
if (lengthExpr != null)
{
super.setLength(eval.evalInt("length", lengthExpr)); //$NON-NLS-1$
}
if (nameExpr != null)
{
Object source = eval.eval("name", nameExpr, Object.class); //$NON-NLS-1$
// be more user-friendly: accept both EL and legacy expressions
if (source instanceof String)
{
super.setNameString((String) source);
}
else
{
// evaluate name only once, so assign it to "list"
super.list = source;
}
}
if (offsetExpr != null)
{
super.setOffset(eval.evalInt("offset", offsetExpr)); //$NON-NLS-1$
}
if (pagesizeExpr != null)
{
super.setPagesize(eval.evalInt("pagesize", pagesizeExpr)); //$NON-NLS-1$
}
if (partialListExpr != null)
{
super.setPartialList(eval.evalBoolean("partialList", partialListExpr)); //$NON-NLS-1$
}
if (requestURIExpr != null)
{
super.setRequestURI(eval.evalString("requestURI", requestURIExpr)); //$NON-NLS-1$
}
if (requestURIcontextExpr != null)
{
super.setRequestURIcontext(eval.evalBoolean("requestURIcontext", requestURIcontextExpr)); //$NON-NLS-1$
}
if (rulesExpr != null)
{
super.setRules(eval.evalString("rules", rulesExpr)); //$NON-NLS-1$
}
if (sizeExpr != null)
{
Object source = eval.eval("size", sizeExpr, Object.class); //$NON-NLS-1$
// be more user-friendly: accept both EL and legacy expressions
if (source instanceof String)
{
super.setSizeObjectName((String) source);
}
else
{
// evaluate size only once, so assign it to the "size" object
super.setSize(source);
}
}
if (sortExpr != null)
{
super.setSort(eval.evalString("sort", sortExpr)); //$NON-NLS-1$
}
if (styleExpr != null)
{
super.setStyle(eval.evalString("style", styleExpr)); //$NON-NLS-1$
}
if (summaryExpr != null)
{
super.setSummary(eval.evalString("summary", summaryExpr)); //$NON-NLS-1$
}
}
/**
* @see javax.servlet.jsp.tagext.Tag#release()
*/
public void release()
{
super.release();
this.cellpaddingExpr = null;
this.cellspacingExpr = null;
this.classExpr = null;
this.decoratorExpr = null;
this.defaultorderExpr = null;
this.defaultsortExpr = null;
this.exportExpr = null;
this.frameExpr = null;
this.lengthExpr = null;
this.nameExpr = null;
this.offsetExpr = null;
this.pagesizeExpr = null;
this.partialListExpr = null;
this.requestURIExpr = null;
this.requestURIcontextExpr = null;
this.rulesExpr = null;
this.sizeExpr = null;
this.sortExpr = null;
this.styleExpr = null;
this.summaryExpr = null;
this.excludedParamsExpr = null;
this.idExpr = null;
this.htmlIdExpr = null;
}
}