[jsr-314-open-mirror] [jsr-314-open] [755-cc:attributesSpecialKeys] (was: Re: composite:attribute "targets" property does not match with ViewDeclarationLanguage.retargetMethodExpressions)

Martin Marinschek mmarinschek at apache.org
Wed Oct 27 05:37:13 EDT 2010


Hi guys,

my +1 (and I believe this is a must) to include

https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=755

for 2.1 and deferring the rest to 2.2.

@Leonardo: just to clarify - with 755, it will be possible to pass
multiple actions to the same composite component (it is really a
bugger that this is not possible today) and one will still have to
supply a method-signature, right? this is missing from your example.

best regards,

Martin


On 10/27/10, Leonardo Uribe <lu4242 at gmail.com> wrote:
> Hi
>
> Attached to this issue:
>
> https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=755
>
>  there is a patch that shows what is required to use
>
> #{cc.attrs.action} ,
> #{cc.attrs.actionListener} ,
> #{cc.attrs.validator} ,
> #{cc.attrs.valueChangeListener}
>
> The idea is just use this expressions instead set "targets" property on
> cc:attribute.
>
> In this way it is possible to write something like this:
>
> testActionVE.xhtml
>
> <testcc:actionVE label="Press me" action="#{helloWorld.send2}"/>
>
> actionVE.xhtml
>
> <cc:interface>
>     <cc:attribute name="action"/>
>     <cc:attribute name="label"/>
> </cc:interface>
> <cc:implementation>
>     <h:commandButton value="#{cc.attrs.label}" action="#{cc.attrs.action}"/>
> </cc:implementation>
>
> Fortunately, this change does not prevent "targets" attribute to work. From
> my point
> of view seems to be very intuitive, compared with the other style.
>
> <cc:interface>
>     <cc:attribute name="action" targets="button" />
>     <cc:attribute name="label"/>
> </cc:interface>
> <cc:implementation>
>     <h:commandButton id="button" value="#{cc.attrs.label}"/>
> </cc:implementation>
>
> So at least for cc:attribute it seems valid (and wanted) to do the change.
>
> Thinking more about this issues I have a proposal to solve:
>
> https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=859
>
> Composite components only support one action attribute
>
> Why this syntax is not possible?
>
> <cc:interface>
>     <cc:attribute name="action" method-signature="Object myMethod();void
> myMethod()" ..../>
>     <cc:attribute name="actionListener" method-signature="void
> myMethod(javax.faces.event.ActionEvent);void myMethod()" ..../>
>     <cc:attribute name="label"/>
> </cc:interface>
>
> That means, allow multiple signatures for a method expression and use some
> wrapper
> like the one proposed with the previous patch.
>
> One last comment: How to deprecate "targets" also for cc:actionSource,
> cc:valueHolder,
> cc:editableValueHolder and cc:clientBehavior? One possibility is do
> something like this:
>
>       <ez:loginPanel id="loginPanel" model="#{bean}">
>         <f:actionListener for="loginEvent"
>                           binding="#{bean.loginEventListener}" />
>         <f:actionListener for="cancelEvent"
>                           binding="#{bean.cancelEventListener}" />
>       </ez:loginPanel>
>
>       <composite:interface name="loginPanel">
>         <composite:actionSource name="loginEvent" />
>         <composite:actionSource name="cancelEvent" />
>       </composite:interface>
>       <composite:implementation>
>                   <h:commandButton name="button1">
>                          <composite:insertActionSource name="loginEvent"/>
>                   </h:commandButton>
>                   <x:mycompositecomponent name="button2">
>                          <composite:insertActionSource name="cancelEvent"
> for="someOtherEvent"/>
>                   </x:mycompositecomponent>
>       </composite:implementation>
>
> In few words, use a tag to insert the attached objects. That will work,
> because
> in a composite component first it is resolved the body on the page than the
> tags
> inside composite:implementation. The advantage over "targets" stuff is the
> implementation details are when the people expect and it could handle
> complex
> cases in a better way like nested composite components usage, and override
> "for"
> attribute.
>
> I know implement that proposal could be complex to implement, but I think it
>
> could be good to at least take it into consideration.
>
> I can provide more code of each proposal if necessary.
>
> best regards,
>
> Leonardo Uribe
>


-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



More information about the jsr-314-open-mirror mailing list