You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Wes Wannemacher (JIRA)" <ji...@apache.org> on 2009/06/18 15:50:43 UTC

[jira] Updated: (WW-3158) XSLT cannot render a collection that contains a null value.

     [ https://issues.apache.org/struts/browse/WW-3158?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wes Wannemacher updated WW-3158:
--------------------------------

    Fix Version/s: 2.1.8

if you can throw together a unit test to go along with this, we'll include it in the next release.

> 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
>             Fix For: 2.1.8
>
>
> 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.