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

Lukasz Lenart updated WW-3441:
------------------------------

    Description: 
list ui tag include select checkboxlist radio.
typically we use a enum values as list for those tag

{code:java}
package biz.model;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.LocalizedTextUtil;

public enum EmployeeType {
        PACKER, DELIVERYMAN, WAREHOUSEMAN , SALESMAN, MANAGER, SERVANT;
        public String getName() {
                return name();
        }

        public String getDisplayName() {
                return LocalizedTextUtil.findText(getClass(), name(), 
ActionContext
                                .getContext().getLocale(), name(), null);
        }

        public static EmployeeType parse(String name) {
                if (name != null)
                        for (EmployeeType en : values())
                                if (name.equals(en.name()) || 
name.equals(en.getDisplayName()))
                                        return en;
                return null;
        }

        @Override  //sometimes we need override toString() to display nicely
        public String toString() {
                return getDisplayName();
        }
}
{code}

{code:html}
<@s.select name="employee.type" list="@biz.model.EmployeeType@values()" 
listKey="name" listValue="displayName" headerKey="" headerValue=""/>
{code}

I override enum's toString use displayName replace name,so currently struts2 
can't bind data as selected

solution:
tag.contains(parameters.nameValue, itemKey)  -->  
tag.contains(parameters.nameValue, itemKey) || 
tag.contains(parameters.nameValue, itemValue)



  was:
list ui tag include select checkboxlist radio.
typically we use a enum values as list for those tag


package biz.model;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.LocalizedTextUtil;

public enum EmployeeType {
        PACKER, DELIVERYMAN, WAREHOUSEMAN , SALESMAN, MANAGER, SERVANT;
        public String getName() {
                return name();
        }

        public String getDisplayName() {
                return LocalizedTextUtil.findText(getClass(), name(), 
ActionContext
                                .getContext().getLocale(), name(), null);
        }

        public static EmployeeType parse(String name) {
                if (name != null)
                        for (EmployeeType en : values())
                                if (name.equals(en.name()) || 
name.equals(en.getDisplayName()))
                                        return en;
                return null;
        }

        @Override  //sometimes we need override toString() to display nicely
        public String toString() {
                return getDisplayName();
        }
}

<@s.select name="employee.type" list="@biz.model.EmployeeType@values()" 
listKey="name" listValue="displayName" headerKey="" headerValue=""/>

I override enum's toString use displayName replace name,so currently struts2 
can't bind data as selected

solution:
tag.contains(parameters.nameValue, itemKey)  -->  
tag.contains(parameters.nameValue, itemKey) || 
tag.contains(parameters.nameValue, itemValue)




> support list ui tag bind data by listValue beside by listKey
> ------------------------------------------------------------
>
>                 Key: WW-3441
>                 URL: https://issues.apache.org/jira/browse/WW-3441
>             Project: Struts 2
>          Issue Type: Improvement
>            Reporter: zhouyanming
>             Fix For: 2.3.18
>
>         Attachments: patch.txt
>
>
> list ui tag include select checkboxlist radio.
> typically we use a enum values as list for those tag
> {code:java}
> package biz.model;
> import com.opensymphony.xwork2.ActionContext;
> import com.opensymphony.xwork2.util.LocalizedTextUtil;
> public enum EmployeeType {
>       PACKER, DELIVERYMAN, WAREHOUSEMAN , SALESMAN, MANAGER, SERVANT;
>       public String getName() {
>               return name();
>       }
>       public String getDisplayName() {
>               return LocalizedTextUtil.findText(getClass(), name(), 
> ActionContext
>                               .getContext().getLocale(), name(), null);
>       }
>       public static EmployeeType parse(String name) {
>               if (name != null)
>                       for (EmployeeType en : values())
>                               if (name.equals(en.name()) || 
> name.equals(en.getDisplayName()))
>                                       return en;
>               return null;
>       }
>       @Override  //sometimes we need override toString() to display nicely
>       public String toString() {
>               return getDisplayName();
>       }
> }
> {code}
> {code:html}
> <@s.select name="employee.type" list="@biz.model.EmployeeType@values()" 
> listKey="name" listValue="displayName" headerKey="" headerValue=""/>
> {code}
> I override enum's toString use displayName replace name,so currently struts2 
> can't bind data as selected
> solution:
> tag.contains(parameters.nameValue, itemKey)  -->  
> tag.contains(parameters.nameValue, itemKey) || 
> tag.contains(parameters.nameValue, itemValue)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to