[jsr-314-open-mirror] [jsr-314-open] [859-MultiActionComponent] RESOLVED (was: Re: Composite components only support one action) attribute (review of issue 859)

Martin Marinschek mmarinschek at apache.org
Fri Oct 29 01:52:36 EDT 2010


Hi guys,

targetAttributeName is problematic for me if we want to move to a
world "without" the target attribute. If we really want to allow
everything to work in this way, we need the implementation to pull the
method-expressions in - and not the interface to push them down.

In such a world, the attribute name "targetAttributeName" is
meaningless, at least to my understanding.

best regards,

Martin

On 10/28/10, Leonardo Uribe <lu4242 at gmail.com> wrote:
> Hi
>
> 2010/10/28 Ed Burns <edward.burns at oracle.com>
>
>> >>>>> On Thu, 28 Oct 2010 12:17:12 -0500, Leonardo Uribe
>> >>>>> <lu4242 at gmail.com>
>> said:
>>
>> LU>
>> https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=859
>>
>> LU> and then Ed Burns propose another similar one, but filling the gaps in
>> LU> documentation and integration with automated tests (That's cool!).
>>
>> LU> Instead call it "methodType", it was proposed targetAttributeName and
>> added
>> LU> this
>> LU> documentation:
>>
>> LU> "...This attribute allows the name of the attribute exposed to the
>> using
>> LU> page to differ from the one actually used in the implementation.  For
>> LU> example, consider a composite component that contains two buttons, one
>> LU> that means "submit" and one that means "cancel".  It is natural to
>> want
>> LU> to declare two composite component attributes to allow these buttons
>> to
>> LU> be customized, for example, "submitAction" and "cancelAction".  For
>> both
>> LU> of these buttons, the method expression should be retargeted to the
>>
>> LU> inner button's "action" attribute.  This scenario would be expressed
>> as
>> LU> follows..."
>>
>> LU> And the proposal using "targetAttributeName" looks like this:
>>
>> As Martin pointed out in a private email, method-signature is optional.
>> So either of these are valid:
>>
>> <cc:interface>
>>  <cc:attribute name="submitAction" targetAttributeName="action" />
>>  <cc:attribute name="cancelAction" targetAttributeName="action" />
>> </cc:interface>
>>
>> <cc:interface>
>>  <cc:attribute name="submitAction" targetAttributeName="action"
>>                method-signature="java.lang.Object action()" />
>>  <cc:attribute name="cancelAction" targetAttributeName="action"
>>                method-signature="java.lang.Object action()" />
>> </cc:interface>
>>
>>
> Ok, I did a checkout and the example is there.
>
>
>> LU> In my opinion, the syntax using "methodType" is preferred. In that
>> one,
>> we
>> LU> are just
>> LU> defining the attribute is used for the behavioral interface
>> ActionSource, as
>> LU> an "action",
>> LU> and the method-signature declaration is not necessary anymore.
>>
>> I don't want to introduce the concept of type here.  We already have the
>> concepts of method-signature, MethodExpression, and special attribute
>> names.
>>
>> Therefore, I'm going with targetAttributeName.
>>
>> Committed revision 8688.
>>
>>
>>
> Ok, now I understand the intention. Yes, it sound good.
>
> Thanks Ed for take a look to this issue.
>
> best regards,
>
> Leonardo Uribe
>
>
>>
>>
>>
>> LU> Note that this syntax already works (partially) without the patch:
>>
>> LU>   <cc:attribute name="submitAction" method-signature="java.lang.Object
>> LU> action()"/>
>>
>> LU> I said "partially" because these two method signatures are valid for
>> action:
>>
>> LU> java.lang.Object action()
>> LU> void action()
>>
>> LU> The problem is more clear when "actionListener" is considered because
>> it has
>> LU> these two
>> LU> valid signatures (since JSF 2):
>>
>> LU> void method(javax.faces.event.ActionEvent )
>> LU> void method()
>>
>> LU> It is not possible to map it using method-signature, because it only
>> allows
>> LU> one of them, but
>> LU> if we use a notation like this:
>>
>> LU>   <cc:attribute name="submitActionListener"
>> methodType="actionListener"/>
>>
>> LU> The previous two signatures are assumed and problem solved. I still
>> think
>> LU> method-signature should allow multiple ones using ';', but before that
>> (I
>> LU> want to propose a
>> LU> patch but not yet), I prefer the proposed patch using methodType.
>>
>> LU> Suggestions are welcome.
>>
>> LU> best regards,
>>
>> LU> Leonardo Uribe
>>
>> --
>> | edward.burns at oracle.com | office: +1 407 458 0017
>> | homepage:               | http://ridingthecrest.com/
>> |  9 work days until German Oracle User's Group Conference
>>
>


-- 

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