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

Reply via email to