Description
Hi, I was asked to create this issue after exchanging some emails in the struts mailing list.
I had the following problem:
Hi, I am having problems populating an action variable Set by request using struts type conversion if the Set has the element type defined as an interface. I have a UserAction-conversion.properties file with the following configuration using the class implementation: KeyProperty_roles=id Element_roles=path.to.class.Roles CreateIfNull_roles=true And UserAction has the collection Set<RolesInterface>. Roles obviously implements RolesInterface. If the Set element type <RolesInterface> is deleted it works just fine. Am I doing something wrong or is this not possible? Thanks
And this was the response, which fixed my problem. :
I reproduced it and seems it's because it tries to instantiate a new element but the interface cannot being instantiated. Please see [1] to know why it tries to instantiate interface instead of class. Annotating the getRoles or setRoles method with @Element(value = path.to.class.Roles.class) may fix this issue. (shouldn't it be path.to.class.Role instead? it seems Roles is a list not element) Regards. [1] github.com/apache/struts/blob/05829e3faadd15cfa67eb234cd1775f2b98918cb/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java#L100
After acknowledging the issue is fixed, the fix suggestion:
You're welcome :) glad to hear this. However, I think it's better that Struts honor .properties file (where element class has been defined strictly by user) before the generic parametrics [1]. Could you please register an issue at [2] with title "conversion fails when generic type is an interface" then paste these emails contents in it's description. Thanks for your report! [1] github.com/apache/struts/blob/05829e3faadd15cfa67eb234cd1775f2b98918cb/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java#L100 [2] issues.apache.org/jira/projects/WW/
Attachments
Issue Links
- links to