Author: jboynes Date: Sun Oct 24 00:39:22 2010 New Revision: 1026719 URL: http://svn.apache.org/viewvc?rev=1026719&view=rev Log: Add JSTL 1.0 ForEach tag that uses javax.el to process EL expressions
Added: tomcat/taglibs/standard/trunk/compat/src/ tomcat/taglibs/standard/trunk/compat/src/main/ tomcat/taglibs/standard/trunk/compat/src/main/java/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ForEachTag.java Added: tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ForEachTag.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ForEachTag.java?rev=1026719&view=auto ============================================================================== --- tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ForEachTag.java (added) +++ tomcat/taglibs/standard/trunk/compat/src/main/java/org/apache/taglibs/standard/tag/compat/core/ForEachTag.java Sun Oct 24 00:39:22 2010 @@ -0,0 +1,76 @@ +package org.apache.taglibs.standard.tag.compat.core; + +import java.util.Collections; +import javax.el.ExpressionFactory; +import javax.el.ValueExpression; +import javax.servlet.jsp.JspApplicationContext; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspFactory; + +import org.apache.taglibs.standard.tag.common.core.ForEachSupport; +import org.apache.taglibs.standard.util.ExpressionUtil; + +/** + * JSTL 1.0 compatible implementation of <foreach> that uses JSP EL support. + */ +public class ForEachTag extends ForEachSupport { + + private ValueExpression beginExpression; + private ValueExpression endExpression; + private ValueExpression stepExpression; + private ValueExpression itemsExpression; + + public ForEachTag() { + } + + @Override + public void release() { + beginExpression = null; + endExpression = null; + stepExpression = null; + itemsExpression = null; + super.release(); + } + + @Override + public int doStartTag() throws JspException { + if (beginSpecified) { + begin = (Integer) beginExpression.getValue(pageContext.getELContext()); + validateBegin(); + } + if (endSpecified) { + end = (Integer) endExpression.getValue(pageContext.getELContext()); + validateEnd(); + } + if (stepSpecified) { + step = (Integer) stepExpression.getValue(pageContext.getELContext()); + validateStep(); + } + if (itemsExpression != null) { + rawItems = itemsExpression.getValue(pageContext.getELContext()); + if (rawItems == null) { + rawItems = Collections.emptyList(); + } + } + return super.doStartTag(); + } + + public void setBegin(String begin) { + beginExpression = ExpressionUtil.createValueExpression(pageContext, begin, Integer.TYPE); + beginSpecified = true; + } + + public void setEnd(String end) { + endExpression = ExpressionUtil.createValueExpression(pageContext, end, Integer.TYPE); + endSpecified = true; + } + + public void setStep(String step) { + stepExpression = ExpressionUtil.createValueExpression(pageContext, step, Integer.TYPE); + stepSpecified = true; + } + + public void setItems(String items) { + itemsExpression = ExpressionUtil.createValueExpression(pageContext, items, Object.class); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org