[
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)