[copy with removed links to avoid detection as spam]

-------- Forwarded Message --------
Subject: Re: Type conversion collection with interface type elements
Date: Thu, 5 Apr 2018 13:02:01 +0000
From: Yasser Zamani <yasserzam...@apache.org>
Reply-To: Struts Users Mailing List <user@struts.apache.org>
To: user@struts.apache.org <user@struts.apache.org>



On 4/4/2018 7:20 PM, Nuno Oliveira wrote:
> 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?

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

> 
> Thanks
> 

Reply via email to