struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-3441) support list ui tag bind data by listValue beside by listKey
Date Fri, 11 Apr 2014 11:15:16 GMT

    [ https://issues.apache.org/jira/browse/WW-3441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13966399#comment-13966399
] 

Lukasz Lenart commented on WW-3441:
-----------------------------------

I don't think it's a right solution, right now you can override each template file from simple
theme and as you uncommon way to present Enum I'd suggest to override those templates as well
instead introducing such change into framework.

> 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.5.x
>
>         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)

Mime
View raw message