Finally read through this thread. Fun stuff. :-)
Martin Marinschek wrote:
Hi Ed,
> Which I still don't understand. Can you please explain explicitly?
>
I sent a mail to Kin-Man that we can't pass parameters from the
framework to the method-expression. So, we can now do:
#{bb.action(myparam)}
to call a method with signature:
public String action(String myparam) {}
but we can not do:
#{bb.valueChangeListener(myparam)}
to call a method with signature:
public void valueChangeListener(ValueChangeEvent ev, String myparam) {}
only with signature:
public void valueChangeListener(String myparam) {}
so what we loose is the ValueChangeEvent, which was provided by the
JSF framework as a parameter to the invoke-call in the
Method-Expression instance (we will only receive the parsed
parameters).
An alternative that I believe we could implement in the JSF layer
without any changes to the EL spec would be to provdie access to an
implicit "event" object during event delivery. The page author would
specify:
#{bb.valueChangeListener(event, myparam)}
Where bb.valueChangeListener is bound to:
public void valueChangeListener(ValueChangeEvent ev, String myparam)
{}
And the "event" implicit object is set up by JSF to point to the
ValueChangeEvent (or more generally, to whatever FacesEvent we happen to
be delivering) just prior to invoking any listeners.
This seems like a perfectly reasonable solution to me, and doesn't
require any special handling of expected/actual parameter types in the
EL layer.
Andy