Author: niallp
Date: Tue Apr 5 22:55:41 2005
New Revision: 160255
URL: http://svn.apache.org/viewcvs?view=rev&rev=160255
Log:
Bug 32778 HTML Link Tag does not work with JSTL Loop Tag
Modified:
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseHandlerTag.java
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/LinkTag.java
Modified:
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseHandlerTag.java
URL:
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseHandlerTag.java?view=diff&r1=160254&r2=160255
==============================================================================
---
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseHandlerTag.java
(original)
+++
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseHandlerTag.java
Tue Apr 5 22:55:41 2005
@@ -669,44 +669,47 @@
*/
protected void prepareIndex(StringBuffer handlers, String name)
throws JspException {
- int index = 0;
- boolean found = false;
-
- // look for outer iterate tag
- IterateTag iterateTag =
- (IterateTag) findAncestorWithClass(this, IterateTag.class);
-
- // Look for JSTL loops
- if (iterateTag == null) {
- Integer i = getJstlLoopIndex();
- if (i != null) {
- index = i.intValue();
- found = true;
- }
-
- } else {
- index = iterateTag.getIndex();
- found = true;
- }
-
- if (!found) {
- // this tag should only be nested in iteratetag, if it's not,
throw exception
- JspException e =
- new
JspException(messages.getMessage("indexed.noEnclosingIterate"));
- TagUtils.getInstance().saveException(pageContext, e);
- throw e;
- }
if (name != null) {
handlers.append(name);
}
handlers.append("[");
- handlers.append(index);
+ handlers.append(getIndexValue());
handlers.append("]");
+
if (name != null) {
handlers.append(".");
}
+ }
+
+ /**
+ * Appends bean name with index in brackets for tags with
+ * 'true' value in 'indexed' attribute.
+ * @param handlers The StringBuffer that output will be appended to.
+ * @exception JspException if 'indexed' tag used outside of iterate tag.
+ */
+ protected int getIndexValue() throws JspException {
+
+ // look for outer iterate tag
+ IterateTag iterateTag =
+ (IterateTag) findAncestorWithClass(this, IterateTag.class);
+ if (iterateTag != null) {
+ return iterateTag.getIndex();
+ }
+
+ // Look for JSTL loops
+ Integer i = getJstlLoopIndex();
+ if (i != null) {
+ return i.intValue();
+ }
+
+ // this tag should be nested in an IterateTag or JSTL loop tag, if
it's not, throw exception
+ JspException e =
+ new
JspException(messages.getMessage("indexed.noEnclosingIterate"));
+ TagUtils.getInstance().saveException(pageContext, e);
+ throw e;
+
}
/**
Modified:
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/LinkTag.java
URL:
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/java/org/apache/struts/taglib/html/LinkTag.java?view=diff&r1=160254&r2=160255
==============================================================================
--- struts/taglib/trunk/src/java/org/apache/struts/taglib/html/LinkTag.java
(original)
+++ struts/taglib/trunk/src/java/org/apache/struts/taglib/html/LinkTag.java Tue
Apr 5 22:55:41 2005
@@ -402,6 +402,7 @@
name = null;
page = null;
action = null;
+ module = null;
paramId = null;
paramName = null;
paramProperty = null;
@@ -411,6 +412,8 @@
target = null;
text = null;
transaction = false;
+ indexId = null;
+ useLocalEncoding = false;
}
@@ -435,26 +438,16 @@
// * @since Struts 1.1
if( indexed ) {
- // look for outer iterate tag
- IterateTag iterateTag =
- (IterateTag) findAncestorWithClass(this, IterateTag.class);
- if (iterateTag == null) {
- // This tag should only be nested in an iterate tag
- // If it's not, throw exception
- JspException e = new JspException
- (messages.getMessage("indexed.noEnclosingIterate"));
- TagUtils.getInstance().saveException(pageContext, e);
- throw e;
- }
+ int indexValue = getIndexValue();
//calculate index, and add as a parameter
if (params == null) {
params = new HashMap(); //create new HashMap if no
other params
}
if (indexId != null) {
- params.put(indexId, Integer.toString(iterateTag.getIndex()));
+ params.put(indexId, Integer.toString(indexValue));
} else {
- params.put("index", Integer.toString(iterateTag.getIndex()));
+ params.put("index", Integer.toString(indexValue));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]