Author: musachy Date: Sat Jul 7 08:43:51 2007 New Revision: 554223 URL: http://svn.apache.org/viewvc?view=rev&rev=554223 Log: WW-2024 Iterator tag does associate a value with the name specified on the "id" property when the value is null
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java?view=diff&rev=554223&r1=554222&r2=554223 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java Sat Jul 7 08:43:51 2007 @@ -248,7 +248,7 @@ String id = getId(); - if ((id != null) && (currentValue != null)) { + if (id != null) { //pageContext.setAttribute(id, currentValue); //pageContext.setAttribute(id, currentValue, PageContext.REQUEST_SCOPE); stack.getContext().put(id, currentValue); Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java?view=diff&rev=554223&r1=554222&r2=554223 ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/IteratorTagTest.java Sat Jul 7 08:43:51 2007 @@ -101,6 +101,49 @@ result = tag.doEndTag(); assertEquals(result, TagSupport.EVAL_PAGE); } + + public void testIteratingWithIdSpecifiedAndNullElementOnCollection() throws Exception { + List list = new ArrayList(); + list.add("one"); + list.add(null); + list.add("three"); + + Foo foo = new Foo(); + foo.setList(list); + + stack.push(foo); + + tag.setValue("list"); + tag.setId("myId"); + + // one + int result = tag.doStartTag(); + assertEquals(result, TagSupport.EVAL_BODY_INCLUDE); + assertEquals(stack.peek(), "one"); + assertEquals(stack.getContext().get("myId"), "one"); + + + tag.doInitBody(); + + // two + result = tag.doAfterBody(); + assertEquals(result, TagSupport.EVAL_BODY_AGAIN); + assertNull(stack.peek()); + assertNull(stack.getContext().get("myId")); + + + // three + result = tag.doAfterBody(); + assertEquals(result, TagSupport.EVAL_BODY_AGAIN); + assertEquals(stack.peek(), "three"); + assertEquals(stack.getContext().get("myId"), "three"); + + result = tag.doAfterBody(); + assertEquals(result, TagSupport.SKIP_BODY); + + result = tag.doEndTag(); + assertEquals(result, TagSupport.EVAL_PAGE); + } public void testArrayIterator() {