Thanks a lot Simon for the insight. I really appreciate it.
When is this //TODO going to be fixed/implemented?

Regards,
Madhav

> -----Original Message-----
> From: Simon Kitching [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 08, 2007 4:43 AM
> To: MyFaces Discussion
> Subject: Re: how do you pass/set parameters upon ActionListener
> execution?-puzzled
> 
> 
> Ok, I looked at the LoadBundleTag class, and there is a nice comment
at
> the start :-)
> 
> /**
>   * TODO:
>   * We should find a way to save loaded bundles in the state, because
> otherwise
>   * on the next request the bundle map will not be present before the
> render phase
>   * and value bindings that reference to the bundle will always log
> annoying
>   * "Variable 'xxx' could not be resolved" error messages.
>   *
>   * @author Manfred Geiler (latest modification by $Author: bdudney $)
>   * @version $Revision: 225368 $ $Date: 2005-07-27 06:14:51 +1200
(Wed,
> 27 Jul 2005) $
>   */
> 
> This code is the same in Tomahawk 1.1.3 and trunk:
>
http://svn.apache.org/repos/asf/myfaces/core/trunk/impl/src/main/java/or
g/
> apache/myfaces/taglib/core/LoadBundleTag.java
> 
> So there's the explanation. The f:loadBundle tag doesn't do anything
> until the render phase, ie #{msg} is not valid during previous phases.
> 
> However the t:updateActionListener obviously must evaluate its
> expression at update-model phase, so the message bundle has not yet
been
> loaded.
> 
> As the comment says, what is really needed is for the f:loadBundle tag
> to attach the name(s) of resource bundles to be loaded to the
component
> tree (eg as attributes in UIViewRoot) and for these to be loaded
during
> restore-view phase.
> 
> Regards,
> 
> Simon
> 
> Madhav Bhargava wrote:
> > I guess I know what the problem is.
> >
> > The EL expression that I have used is:
> #{msg['breadcrumb.label.reminders']}
> >
> > This expression refers to a key (breadcrumb.label.reminders) in the
> > message bundle(Messages.properties)
> >
> > When this value goes to the updateActionListener tag's doStartTag
method
> > it tries to create a ValueBinding out of this EL expression. This is
> > where it returns null as the value binding cannot be created.
> >
> > To circumvent this problem in the setter method for displayText I
added
> > the following:
> >
> > ...
> >
> > ...
> >
> > ResourceBundle bundle = ResourceBundle.getBundle(resourceBundleName,
> > locale, getCurrentClassLoader(params));
> >
> > this.displayText= Bundle.getString(key);
> >
> > In the JSP I pass:
> >
> > <t:updateActionListener
> >
> > property="#{breadCrumbNavigatorBean.displayText}"
> >
> > value="breadcrumb.label.reminders"/>
> >
> > *Now it works!!*
> >
> > I guess you cannot pass a EL that references a message bundle as a
value
> > for t:updateActionListener.
> >
> > The only thing that I cannot understand is -
> >
> > I have <f:loadBundle basename="com.bingo.tringo.bundle.Messages"
> > var="msg"/> in the Jsp.
> >
> > The same EL expression works when given as a value to
<t:outputLabel>
> > component but then it does not work when given as a value to
> > <t:updateActionListener>
> >
> > If someone can throw some light then that will be great.
> >
> > Regards,
> >
> > madhav
> >
> >>  -----Original Message-----
> >
> >>  From: Madhav Bhargava [mailto:[EMAIL PROTECTED]
> >
> >>  Sent: Wednesday, March 07, 2007 1:36 PM
> >
> >>  To: MyFaces Discussion
> >
> >>  Subject: RE: how do you pass/set parameters upon ActionListener
> >
> >>  execution?-puzzled
> >
> >>
> >
> >>  Thanks a lot Simon for all the help. I will have to debug the
> component.
> >
> >>  If I find something interesting then I will share with the list.
> >
> >>
> >
> >>  Cheers,
> >
> >>  madhav
> >
> >>
> >
> >>
> >
> >>  > -----Original Message-----
> >
> >>  > From: Simon Kitching [mailto:[EMAIL PROTECTED]
> >
> >>  > Sent: Wednesday, March 07, 2007 1:07 PM
> >
> >>  > To: MyFaces Discussion
> >
> >>  > Subject: Re: how do you pass/set parameters upon ActionListener
> >
> >>  > execution?-puzzled
> >
> >>  >
> >
> >>  > Madhav,
> >
> >>  >
> >
> >>  > Well, people here seem to be quite sure that the
> >
> >>  t:updateActionListener
> >
> >>  > is correct; I certainly don't *see* any problems with it, nor do
I
> >
> >>  > *experience* any problems.
> >
> >>  >
> >
> >>  > If you are going to say "It should not be a problem with getter
and
> >
> >>  > setter" then I'm not sure that this list can be much more help.
> Looks
> >
> >>  > like you'll have to step through the updateActionListener with a
> >
> >>  > debugger - or build your own custom version with extra logging
in
> it.
> >
> >>  >
> >
> >>  > Regards,
> >
> >>  >
> >
> >>  > Simon
> >
> >>  >
> >
> >>  > Madhav Bhargava wrote:
> >
> >>  > > Hi Simon,
> >
> >>  > >
> >
> >>  > > The version of Myfaces that I am using is from a nightly build
> >
> >>  version
> >
> >>  > > 1.1.5.
> >
> >>  > > Tomahawk version is 1.1.5 as well (some nightly build)
> >
> >>  > >
> >
> >>  > > displayText is a String property and getter and setter have
been
> >
> >>  > > generated using Eclipse so I am sure that there is no problem
with
> >
> >>  the
> >
> >>  > > signature.
> >
> >>  > >
> >
> >>  > > It should not be a problem with getter and setter as literal
> String
> >
> >>  > > values are getting set properly in the backing bean.
> >
> >>  > >
> >
> >>  > > Regards,
> >
> >>  > > Madhav
> >
> >>  > >
> >
> >>  > >> -----Original Message-----
> >
> >>  > >> From: Simon Kitching [mailto:[EMAIL PROTECTED]
> >
> >>  > >> Sent: Wednesday, March 07, 2007 12:35 PM
> >
> >>  > >> To: MyFaces Discussion
> >
> >>  > >> Subject: Re: how do you pass/set parameters upon
ActionListener
> >
> >>  > >> execution?-puzzled
> >
> >>  > >>
> >
> >>  > >> Sorry I didn't read the whole mail.
> >
> >>  > >>
> >
> >>  > >> How exactly is "msg" defined?
> >
> >>  > >>
> >
> >>  > >> I don't see here what version of Tomahawk you are working
with.
> For
> >
> >>  > >> version 1.1.3 (which is what I have at hand) the value is
fetched
> >
> >>  just
> >
> >>  > >> using a standard call to "getValue()", so there's nothing
special
> >
> >>  > > there.
> >
> >>  > >> However afterwards it tries to do some type-conversion:
> >
> >>  > >>
> >
> >>  > >>      Object v = getValue();
> >
> >>  > >>      if (v != null &&
> >
> >>  > >>          v instanceof String)
> >
> >>  > >>      {
> >
> >>  > >>          Class type = updateBinding.getType(context);
> >
> >>  > >>           ....
> >
> >>  > >>      }
> >
> >>  > >>      updateBinding.setValue(context, v);
> >
> >>  > >>
> >
> >>  > >> If expression breadCrumbNavigatorBean.displayText doesn't
> reference
> >
> >>  a
> >
> >>  > >> String property then there might be a conversion problem.
Note
> that
> >
> >>  > >> exactly what defines a javabean "property" is slightly more
> complex
> >
> >>  > > than
> >
> >>  > >> just having a setter method. For example, the setter must not
be
> >
> >>  > > static,
> >
> >>  > >> and there must not be a getter method with a conflicting
> signature.
> >
> >>  > > You
> >
> >>  > >> could check by using java.bean.Introspector on this class and
> >
> >>  verify
> >
> >>  > >> that it does agree that there is indeed a writeable String
> property
> >
> >>  > >> "displayText". Ok, it's not likely that this is wrong but
> >
> >>  > >> t:updateActionListener is in wide use and there are no known
> >
> >>  problems
> >
> >>  > >> with it so something odd is going on..
> >
> >>  > >>
> >
> >>  > >> Cheers,
> >
> >>  > >>
> >
> >>  > >> Simon
> >
> >>  > >>
> >
> >>  > >>
> >
> >>  > >> Madhav Bhargava wrote:
> >
> >>  > >>> As I mentioned in point number 2 it works. displayText
property
> in
> >
> >>  > > the
> >
> >>  > >>> backing bean will get populated with "dummyValue"
> >
> >>  > >>>
> >
> >>  > >>> The immediate inference of this result was that there is
> something
> >
> >>  > > wrong
> >
> >>  > >>> with my EL expression. But then when I used <t:outputLabel>
tag
> >
> >>  with
> >
> >>  > > the
> >
> >>  > >>> same EL expression it outputted the correct value.
> >
> >>  > >>>
> >
> >>  > >>> This means that there is nothing wrong with the EL
expression.
> The
> >
> >>  > > key
> >
> >>  > >>> is properly defined in the Messages.properties file as well.
> >
> >>  > >>>
> >
> >>  > >>> ~madhav
> >
> >>  > >>>
> >
> >>  > >>>> -----Original Message-----
> >
> >>  > >>>> From: Simon Kitching [mailto:[EMAIL PROTECTED]
> >
> >>  > >>>> Sent: Wednesday, March 07, 2007 12:20 PM
> >
> >>  > >>>> To: MyFaces Discussion
> >
> >>  > >>>> Subject: Re: how do you pass/set parameters upon
ActionListener
> >
> >>  > >>>> execution?- puzzled
> >
> >>  > >>>>
> >
> >>  > >>>> What happens if you do this?
> >
> >>  > >>>> <t:updateActionListener
> >
> >>  > >>>>   property="#{breadCrumbNavigatorBean.displayText}"
> >
> >>  > >>>>   value="dummyValue"/>
> >
> >>  > >>>>
> >
> >>  > >>>> Madhav Bhargava wrote:
> >
> >>  > >>>>> Hi Werner,
> >
> >>  > >>>>>
> >
> >>  > >>>>> I double checked the jsp and the backing bean but it just
> >
> >>  refuses
> >
> >>  > > to
> >
> >>  > >>>>> parse the EL expression.
> >
> >>  > >>>>>
> >
> >>  > >>>>> This is what I have done:
> >
> >>  > >>>>>
> >
> >>  > >>>>> *Jsp Code:*
> >
> >>  > >>>>>
> >
> >>  > >>>>> <t:commandLink value="Add Reminders"
styleClass="linkClass"
> >
> >>  > >>>>> action="#{reminderController.getExistingRemindersList}"
> >
> >>  > >>>>>
> >
> >>  > >>>>>
actionListener="#{breadCrumbNavigatorBean.updateBreadCrumb}"
> >
> >>  > >>>>>
rendered="#{!physicianHomeController.showRemindersMoreLink}">
> >
> >>  > >>>>>
> >
> >>  > >>>>> <t:updateActionListener
> >
> >>  > >>>>> property="#{breadCrumbNavigatorBean.displayText}"
> >
> >>  > >>>>> value="#{msg['breadcrumb.label.reminders']}"/>
> >
> >>  > >>>>>
> >
> >>  > >>>>> </t:commandLink>
> >
> >>  > >>>>>
> >
> >>  > >>>>> In the* backing bean* I just defined a String property
with
> the
> >
> >>  > > name
> >
> >>  > >>>>> displayText.
> >
> >>  > >>>>>
> >
> >>  > >>>>>
> >
> >>  > >>>>> */Following is the observation:/*
> >
> >>  > >>>>>
> >
> >>  > >>>>> 1. The displayText in the backing bean is null. In other
words
> >
> >>  the
> >
> >>  > >>> EL
> >
> >>  > >>>>> expression does not get parsed resulting in a null value.
> >
> >>  > >>>>>
> >
> >>  > >>>>> 2. If a literal string is given in place of an EL
expression
> >
> >>  then
> >
> >>  > >>> the
> >
> >>  > >>>>> value is correctly populated in the backing bean.
> >
> >>  > >>>>>
> >
> >>  > >>>>> 3. Based on the result from point number 2 - I tried just
> >
> >>  > > outputting
> >
> >>  > >>> the
> >
> >>  > >>>>> value of the EL expression using: <t:outputLabel
> >
> >>  > >>>>> value="#{msg['breadcrumb.label.reminders']}"
> >
> >>  > >>>>> styleClass="outputLabelText"/> The same expression is now
> parsed
> >
> >>  > >>>>> properly and the value appears on the page. This means
that
> >
> >>  there
> >
> >>  > > is
> >
> >>  > >>>>> nothing wrong with the EL expression.
> >
> >>  > >>>>>
> >
> >>  > >>>>> I am not sure what is going on? Why will
> >
> >>  <t:updateActionListener>
> >
> >>  > >>> refuse
> >
> >>  > >>>>> to parse an EL expression that references a message
bundle?
> >
> >>  > >>>>>
> >
> >>  > >>>>> Regards,
> >
> >>  > >>>>>
> >
> >>  > >>>>> Madhav
> >
> >>  > >>>>>
> >
> >>  > >>>>>>  -----Original Message-----
> >
> >>  > >>>>>>  From: news [mailto:[EMAIL PROTECTED] On Behalf Of
Werner
> >
> >>  Punz
> >
> >>  > >>>>>>  Sent: Tuesday, March 06, 2007 4:10 PM
> >
> >>  > >>>>>>  To: [email protected]
> >
> >>  > >>>>>>  Subject: Re: how do you pass/set parameters upon
> >
> >>  ActionListener
> >
> >>  > >>>> execution?
> >
> >>  > >>>>>>  I had similar usescases (although not using
> >
> >>  > > internationalisation)
> >
> >>  > >>>>>>  in my current up a dozend times, the mechanism itself
works,
> >
> >>  > >>>>>>  I can only guess here,
> >
> >>  > >>>>>>  first of all which myfaces version do you use and which
> >
> >>  tomahawk
> >
> >>  > >>>> version.
> >
> >>  > >>>>>>  I can recommend to go to the latest 1.1.5 stable and use
the
> >
> >>  > >>> tomahawk
> >
> >>  > >>>>>>  and sandbox nightlies.
> >
> >>  > >>>>>>  Secondly check for typos nav.msg.remiders seems like one
> >
> >>  > >>>>>>  there is an "n" missing in reminders typowise, which
could
> >
> >>  > >>>>>>  be the cause for an empty string issued.
> >
> >>  > >>>>>>  Werner
> >
> >>  > >>>>>>  Madhav Bhargava schrieb:
> >
> >>  > >>>>>>  > Hi Werner,
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  > Yes, you are right. But I still cannot get the values
in
> my
> >
> >>  > >>> backing
> >
> >>  > >>>>>>  bean.
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  > *Jsp code:*
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  > <t:commandLink value="Add Reminders"
> styleClass="linkClass"
> >
> >>  > >>>>>>  > action="#{reminderController.showAddReminderScreen}"
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  >
> actionListener="#{breadCrumbNavigatorBean.updateBreadCrumb}"
> >
> >>  > >>>>>>  >
> >
> >>  rendered="#{!physicianHomeController.showRemindersMoreLink}">
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  > <t:updateActionListener
> >
> >>  > >>>>>>  >
> >
> >>  property="#{breadCrumbNavigatorBean.participant.displayText}"
> >
> >>  > >>>>>>  > value="#{msg['nav.msg.remiders']}"/>
> >
> >>  > >>>>>>  >
> >
> >>  > >>>>>>  > </t:commandLink>
> >
> >>  > >>> **************** CAUTION - Disclaimer *****************
> >
> >>  > >>> This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION
> >
> >>  > > intended
> >
> >>  > >> solely for the use of the addressee(s). If you are not the
> intended
> >
> >>  > >> recipient, please notify the sender by e-mail and delete the
> >
> >>  original
> >
> >>  > >> message. Further, you are not to copy, disclose, or
distribute
> this
> >
> >>  > > e-mail
> >
> >>  > >> or its contents to any other person and any such actions are
> >
> >>  unlawful.
> >
> >>  > >> This e-mail may contain viruses. Infosys has taken every
> reasonable
> >
> >>  > >> precaution to minimize this risk, but is not liable for any
> damage
> >
> >>  you
> >
> >>  > > may
> >
> >>  > >> sustain as a result of any virus in this e-mail. You should
carry
> >
> >>  out
> >
> >>  > > your
> >
> >>  > >> own virus checks before opening the e-mail or attachment.
Infosys
> >
> >>  > > reserves
> >
> >>  > >> the right to monitor and review the content of all messages
sent
> to
> >
> >>  or
> >
> >>  > >> from this e-mail address. Messages sent to or from this
e-mail
> >
> >>  address
> >
> >>  > > may
> >
> >>  > >> be stored on the Infosys e-mail system.
> >
> >>  > >>> ***INFOSYS******** End of Disclaimer ********INFOSYS***
> >
> >>  > >
> >

Reply via email to