Thanks for the update Leonardo.  But just to be clear, when we try
this scenario on Glassfish they're doing essentially what I proposed
(separate onclick JS that sets the right value).  Does that param need
to be default then...?


Curtiss Howard



On Thu, May 6, 2010 at 9:32 AM, Leonardo Uribe <[email protected]> wrote:
> Hi
>
> There is a change introduced on MYFACES-2372. The renderkit javadoc says
> this:
>
> ".....If the component being rendered by this renderer has any UIParameter
> children, each one of them must be rendered using the renderer for
> component-family: "javax.faces.Input" and renderer-type:
> "javax.faces.Hidden". For discussion, this is called the hiddenRenderer. A
> component with component-type "javax.faces.Input" must be created for local
> use in rendering each UIParameter child. The "id" property of the temporary
> component must be set to the "name" of the UIParameter. The "value" property
> of the temporary component must be set to the "value" of the UIParameter.
> For each UIParameter  child, the hiddenRenderer must have its encodeBegin(),
> encodeChildren(), and encodeEnd() methods called, in order, passing the
> temporary component as the second argument....."
>
> So, we put the code at the end of HtmlButtonRendererBase.encodeEnd(). In
> theory if you set the web config para
> org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON to true, the required
> javascript that clear hidden fields will be set and the problem you mention
> dissapear.
>
> I'll check this one (it is necessary to track this one from 1.2), but it
> will take some time, right now I'm busy implementing
> composite:clientBehavior tag.
>
> regards,
>
> Leonardo Uribe
>
> 2010/5/6 Curtiss Howard <[email protected]>
>>
>> Hi,
>>
>> Our tester has found an issue that apparently is not tested in CTS but
>> nonetheless is a bug with MyFaces (confirmed that it does not occur
>> with Glassfish).
>>
>> Let's say we have the following:
>>
>> <h:commandButton ...>
>>  <f:param name="paramName" value="value1" />
>> </h:commandButton>
>> <h:commandButton ...>
>>  <f:param name="paramName" value="value2" />
>> </h:commandButton>
>>
>> We'll render two buttons and two hidden inputs with the name
>> "paramName" but two different values.  The problem is that one value
>> will clobber the other and you don't get the value you expect when
>> clicking the second button.  Obviously the fix is to make the logic in
>> HtmlButtonRendererBase behave like the link case, where onclick
>> Javascript is rendered to dynamically set the correct parameter value
>> depending on which button was clicked.  I've spent some time trying to
>> do this by reusing the oamSubmit() code, but it doesn't seem to work
>> (looks like the target makes it open another browser window and in our
>> case, we do navigation based on the param, and that navigation never
>> occurs).  Unfortunately due to other obligations I'm not sure that I
>> have the time to really fix this "correctly" right away.  I think
>> there are a couple of cases that have to be handled... rendering this
>> JS when there's no onclick, when there is an onclick, when behaviors
>> are attached, etc.  It's a bit too much for me to get into at the
>> moment and I'm not that familiar with this portion of the code.  Is
>> there anyone out there willing to lend a hand?
>>
>> Thanks in advance,
>>
>>
>> Curtiss Howard
>
>

Reply via email to