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: [email protected]
For additional commands, e-mail: [email protected]