Thanks Waldo! This solves my problem exactly how I needed to attack it. The little extra code doesn't bother me, it's just how it's done. I simply didn't know enough about Tapestry, specifically ComponentMessagesSource and ComponentSource interfaces!
Thanks again, this rocks. On Thu, Apr 24, 2008 at 1:52 PM, Waldo Mendoza <[EMAIL PROTECTED]> wrote: > > Adam Zimowski <zimowski74 <at> gmail.com> writes: > > > > > Is there a way to access message catalog of some page or component > > from another page or component? I know of two ways to do this, but > > both are "hacks" IMHO: > > > > class SomePage { > > > > @Inject > > private Messages _messages; > > > > public getMessages() { > > return _messages; > > } > > } > > > > class Foo { > > > > @InjectPage > > private SomePage _page; > > > > // now I can access messages from _page > > } > > > > Above way is a pain because every page/component needs to explicitly > > expose message catalog for use by other page. Another way to do this > > would be to obtain page/component resource path, and do it > > old-fashioned way with java.util.Property - ughh... ! > > > > What I was looking for is some support by Messages, perhaps overriden > > method get(String key): > > > > Messages.get(String resourcePath, String key) > > Messages.get(Class component, String key) > > > > The thing is, that I need to read another componen't message catalog > > not knowing ahead of time what the comopnent is. I don't see a "clean" > > way of doing it at the moment, any ideas? > > > > -adam > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscribe <at> tapestry.apache.org > > For additional commands, e-mail: users-help <at> tapestry.apache.org > > > > > > > Hello Adam > > One posibility is to Inject ComponentSource and ComponentMessageSource, after > that you can use ComponentSource to get the page by name, and use > ComponentMessageSource to get the page Messages, something like: > > private ComponentMessagesSource _componentMessageSource; > > private ComponentSource _componentSource; > > ... > Component page = _componentSource.getPage("foo"); > Messages messages = _componentMessageSource.getMessages( > page.getComponentResources().getComponentModel(), > page.getComponentResources().getLocale()); > .... > > > Maybe it would be more clean to create a specific service that you can inject > to your page. > > Hope this helps. > Bye > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]