XSLT cannot render a collection that contains a null value.
-----------------------------------------------------------

                 Key: WW-3158
                 URL: https://issues.apache.org/struts/browse/WW-3158
             Project: Struts 2
          Issue Type: Bug
          Components: Other
    Affects Versions: 2.1.6
         Environment: NA
            Reporter: Steve Wolke


For example a action class

public class TestListNullEntry implements Action{

    private List testList = new ArrayList();
    
    public String execute() throws Exception {
        testList.add("entry1");
        testList.add(null);
        testList.add("entry3");
        return this.SUCCESS;
    }

    public List getTestList() {
        return testList;
    }
}

This action is unable to render a xslt result because of the null entry.

Code changes to fix this problem.

Index: 
C:/apache/struts/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java
===================================================================
--- AdapterFactory.java (revision 651946)
+++ AdapterFactory.java (working copy)

    - public Node adaptNullValue(BeanAdapter parent, String propertyName) {
   + public Node adaptNullValue(AdapterNode parent, String propertyName) {
        return new StringAdapter(this, parent, propertyName, "null");
    }

Also changes needed in 

Index: 
C:/apache/struts/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
===================================================================
--- CollectionAdapter.java      (revision 651946)
+++ CollectionAdapter.java       (working copy)

        for (Object value : values) {
           - Node childAdapter = getAdapterFactory().adaptNode(this, "item", 
value);
           + Node childAdapter;
           + if (value == null) {
           +    childAdapter = getAdapterFactory().adaptNullValue(this, "item");
           + } else {
           +    childAdapter = getAdapterFactory().adaptNode(this, "item", 
value);
           + }

            if (childAdapter != null)
                children.add(childAdapter);

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to