Hello,

I have the same problem, did you find a solution?
My parameter is an ArrayList.

Yaniv.


Stephane Grenier-2 wrote:
> 
> Hi all,
> 
> I'm trying to create a custom component and I've got it working when the 
> input value is a String type parameter from my backend bean. However my 
> problem is that it's not working when the parameter is anything but a
> String 
> object, say a data model object. I've tried a number of options, and I
> know 
> it's possible, but I can't seem to get it. I've even seen a post that said 
> to look at the schedule tag, but I can't seem to isolate the right
> snippet. 
> Therefore you're assistance would be immensely appreciated. So far here's 
> what I have:
> 
> public class AddressTag extends UIComponentTag
> {
>       private String address;
> 
> ... set/getAddress(String address);
> 
>       @Override
>       protected void setProperties(UIComponent component)
>       {
>               /* you have to call the super class */
>               super.setProperties(component);
>               ((AddressComponent)component).setValue(address);
> 
>               FacesContext context = FacesContext.getCurrentInstance();
>               Application application = context.getApplication();
>     ValueBinding binding = application.createValueBinding(address);
>     component.setValueBinding("value", binding);
>       }
> 
>       ... // other methods.
> }
> 
> The address component is really simple:
> 
> public class AddressComponent extends UIInput
> {
>       private String address;
> 
>       @Override
>       public void encodeBegin(FacesContext context) throws IOException
>       {
>               ResponseWriter writer = context.getResponseWriter();
>         writer.startElement("label", this);
>         writer.write("test custom component: " + address);
>         writer.endElement("label");
>         writer.flush();
>       }
> 
>       ... // other methods.
> }
> 
> And in the JSP I have:
> 
> <cpc:address value="#{backendBean.address}"/>
> 
> Now when I try to change the backendBean.address property from String to
> an 
> Address object (data model object), there are two issues.
> 
> 1. In the AddressTag class the following line:
> 
> ValueBinding binding = application.createValueBinding(address);
> 
> Only seems to allow a String object, and not a generic Object.
> 
> 2. Assuming I remove those lines of code, I get 
> jsp.error.beans.property.conversion error.
> 
> Now I've also tried to add the <deferred-value> to the tld definition (I 
> have to admit I don't yet understand what this property does), but that 
> hasn't helped.
> 
> You're assistance is greatly appreciated as I've already wracked my brain 
> enough on this issue! I'm just trying to send the data model object to the 
> custom component because we're continuing to render it over and over and 
> over on many screens in a special format.
> 
> Regards,
> Steph
> 
> 

-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-custom-component-with-a-non-string-data-model-tf2922326.html#a8275636
Sent from the MyFaces - Users mailing list archive at Nabble.com.

Reply via email to