On Tue, 2008-07-08 at 10:35 +0200, [EMAIL PROTECTED] wrote:
> Leonardo Uribe schrieb:
> >
> >
> > On Mon, Jul 7, 2008 at 11:43 PM, Jihoon Kim <[EMAIL PROTECTED] 
> > <mailto:[EMAIL PROTECTED]>> wrote:
> >
> >     Hi,
> >
> >     I had some questions while refactoring the code using the annotations
> >     of myfaces-builder-plugin and was wondering if I was simply using it
> >     incorrectly or if it is yet to be implemented [since I am currently
> >     pointing to the snapshot repository of the plugin].
> >
> >     (1)  JSFProperty annotation seems to work intuitively as suggested in
> >     creating the get + set methods of the properties, but I was wondering
> >     about the properties for JSFJspProperties + JSFJspProperty.
> >
> >     Since I wanted the components that didn't utilize the fields
> >     frequently to be pushed to the Map [so to make the code cleaner], I
> >     was hoping to use these annotations for the fields, but I apparently
> >     do not see them being generated within the Tag of the components and
> >     the tld as I thought they would be generated at.
> >
> >     The following annotation is within a blank interface of an abstract
> >     class to be created as concrete with JSFComponent annotation :
> >
> >
> >     @JSFJspProperty
> >        name          = "allowMultipleSelection"
> >        returnType  = "java.lang.String"
> >        longDesc    = "A flag that indicates whether you can allow more
> >     than
> >     one item to be selected at the same time."
> >
> >
> > @JSFJspProperties and @JSFJspProperty is used only as a last resource, 
> > when you want to define a property used on the tld but not defined on 
> > the component (like "binding" property) or a parent component property 
> > should not be on the tld of the child component, and you cannot change 
> > the api of the component like in myfaces core (you cannot add public 
> > methods to components). If you are working with new components use 
> > @JSFProperty instead and avoid any usage at possible of @JSFJspProperty.
> 
> But JSFProperty does assume that there is a real field on the component, 
> which is not what Jihoon Kim wants.
> 
> I was looking at this a couple of weeks ago, and from memory one of the 
> JSFJsp* annotations really does work fine when you want real properties 
> declared in the tld (and present as methods on the tag class) but just 
> want the data pushed into the component's attributes map rather than 
> stored as a property on the component. So I was going to propose 
> renaming that annotation to JSFAttribute. Unfortunately I cannot 
> remember which annotation it was. I'll have a look on my home pc after 
> work today.
> 
> I guess the alternative is to put a flag on the @JSFProperty annotation 
> to indicate that it is an "attributes map only" property. But that does 
> require a real method on the component to attach the annotation to, 
> which is not right for attribute-map-based properties. Maybe we could 
> allow an @JSFProperty annotation to be attached to a public static final 
> string field on the component itself; each component that supports an 
> attribute really should have a constant defined which other classes can 
> then use to fetch that attribute from the attributes map. When the 
> plugin finds a JSPProperty annotation attached to a constant, then it 
> could set the internal "isAttribute" flag on the corresponding 
> PropertyMeta object so that we know to skip that PropertyMeta when 
> generating the saveState/restoreState methods. Thoughts?
> 

Hmm. The annotation I was thinking of was JSFJspProperty. I already
committed the comment that it can be used for declaring component
attributes that live only in the attributes map.

But I must have misunderstood Leonardo's intention. Looking at the
QdoxModelBuilder, there is a comment that this annotation exists only
"to solve a problem with binding on JSF1.1" (line 1072). I don't
currently understand what that problem might be. Leonardo?

It would be interesting to also look at Tomahawk though. Don't we
already have quite a lot of components that have properties on the tag
that map just into the attributes map, and not to the component? I can't
remember for the moment how that is set up, but will try to look
tomorrow.


Regards,
Simon

Reply via email to