This sounds like what I'm seeing.

Not sure if I like the solution, we are using two different tags for
ajax4jsf and then the normal JSF bundle tag.  It would be too much time
to write my own to put it in the restore-view phase.

I was able to get the key out of the attribute and look it up manually
in the bundle.
I would rather have evaluated it as an expression.

Shawn 
-----Original Message-----
From: Simon Kitching [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 19, 2007 6:41 PM
To: MyFaces Discussion
Subject: Re: f:attribute in phaselistener

Ah.. Shawn, the value you are missing isn't taken from a message bundle 
is it?

There was a question on this list a month or so ago about using an EL 
expression to get a value from a message bundle. The f:loadBundle tag 
currently only works in the "render" phase, and does nothing on 
restore-view. This means that any EL expression referencing the message 
bundle will return null during postback processing.

This isn't normally a problem; messages from message-bundles are 
normally used just to output text. However if for some reason anyone 
tries to reference one in the postback (eg from a t:updateActionListener

or t:aliasBean) then it won't currently work.

And as noted earlier in this thread, prior to myfaces 1.1.5 an 
f:attribute was evaluated once only and the result of the expression 
stored as the parent component's attribute. In 1.1.5 and later the 
*expression* is now stored and evaluated each time it is used. And of 
course the *first* time the f:attribute is encountered is during a 
render phase. So if you use an f:attribute to access a message bundle, 
then it would work in pre-1.1.5 because it evaluates once (during a 
render phase) and stores the resulting string. Even when that attribute 
is fetched during a postback phase it will be there. However since 1.1.5

it will be the *el expression* that is fetched and evaluated - so the 
message-bundle is not loaded so the expression will evaluate to null in 
the postback phase (and will work fine in the render phase).

The fix is probably to update the f:loadBundle tag to reload the bundle 
during the restore-view phase.

Regards,

Simon

Ernani wrote:
> I have the same issue here, just upgraded and it is missing all
parameters
> for messages.
> 
> Please let me know if you figure it out how to resolve this problem.
> Otherwise I will have to downgrade the MyFaces version.
> 
> Thanks.
> 
> Ernani
> 
> 
> Garner, Shawn-2 wrote:
>> I upgraded to 1.1.5 and now my phase listener can no longer get my
>> f:attribute attribute on a component (eg: <h:inputText>).
>>
>> I iterate over the client IDs with messages by doing
>> FacesContext.getClientIdsWithMessages();
>>
>> I get the component by UIViewRoot.findComponent(clientID) and then
try
>> to get the attribute by String fieldRef =
>> component.getAttributes().get("fieldRef");
>>
>>  
>>
>>  
>>
>> It worked before I upgraded.
>>
>>  
>>
>> Can somebody help me?
>>
>>  
>>
>> Shawn 
>>
>>  
>>
>>
>>
> 

Reply via email to