Bill,
Thanks for the pointer. I have already downloaded the source and have
extended Struts successfully many times. The MessageResources thing was
something I couldn't quite get my head around, so I figured I'd ask the
experts. Now I have the code, it didn't seem so complicated after all.
Cheers,
Alan.
Bill Siggelkow <billsigg@bellsouth.net> wrote in news:ckjkjn$nqs$1
@sea.gmane.org:
> Alan -- I strongly encourage you (if you haven't already) to download
> the Struts source and use it as you develop. You will be amazed at how
> much quicker you can grok Struts.
>
> -Bill Siggelkow
>
> Alan Pocklington wrote:
>
>> Oh okay, I'll look into that. Thanks for your help.
>>
>> Hubert Rabago <hrabago@gmail.com> wrote in
>> news:7b809eef0410130857655fc68@mail.gmail.com:
>>
>>
>>>Struts has some special treatment for locales. You'd wanna abide by
>>>that for consistency with what its internal engine uses for the
>>>resource files.
>>>
>>>
>>>On Wed, 13 Oct 2004 15:54:02 +0000 (UTC), Alan Pocklington
>>><ajp@pocko.freeserve.co.uk> wrote:
>>>
>>>>Cheers for pointing that out. As of yet I don't need message
>>>>arguments so that'll be fine.
>>>>
>>>>Was there any reason for having a getLocale(request) method? I'm
>>>>guessing the implementation was different from just
>>>>request.getLocale().
>>>>
>>>>
>>>>Hubert Rabago <hrabago@gmail.com> wrote in
>>>>news:7b809eef041013084978b095ae@mail.gmail.com:
>>>>
>>>>
>>>>
>>>>
>>>>>On Wed, 13 Oct 2004 10:38:09 -0500, Hubert Rabago
>>>>><hrabago@gmail.com> wrote:
>>>>>
>>>>>>Yup, copy/paste from existing code works fast. :)
>>>>>
>>>>>It's also not foolproof. This excerpt was specific to the needs of
>>>>>the class I took it from. Check the getMessage() method -- it can
>>>>>actually accept message arguments, but the evaluateMessage()
>>>>>doesn't use them. If you do need them, just modify
>>>>>evaluateMessage() to also accept an argument parameter.
>>>>>Sorry about that.
>>>>>
>>>>>
>>>>>>On Wed, 13 Oct 2004 15:35:24 +0000 (UTC), Alan Pocklington
>>>>>><ajp@pocko.freeserve.co.uk> wrote:
>>>>>>
>>>>>>>Wow, thanks for the quick reply. Will do!
>>>>>>
>>>>>>
>>>>>>>Hubert Rabago <hrabago@gmail.com> wrote in
>>>>>>>news:7b809eef041013082969eb9303@mail.gmail.com:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>Put this in a util class and call evaluateMessage():
>>>>>>>>
>>>>>>>> /**
>>>>>>>> * <p>Evaluate the given message resource key.</p>
>>>>>>>> *
>>>>>>>> * @param messageKey the name of the resource entry to
>>>>>>>> retrieve * @param bundle The key specified in the
>>>>>>>> * <code><message-resources></code>
element for the
>>>>>>>> * resource bundle to use
>>>>>>>> * @param request the request being processed
>>>>>>>> * @param servletContext the current {@link
>>>>>>>> ServletContext} * @return the value of paramName from
the
>>>>>>>> message resources */
>>>>>>>> public String evaluateMessage(
>>>>>>>> String messageKey,
>>>>>>>> String bundle,
>>>>>>>> HttpServletRequest request,
>>>>>>>> ServletContext servletContext) {
>>>>>>>> // get the message resources
>>>>>>>> MessageResources resources;
>>>>>>>> if (bundle != null) {
>>>>>>>> resources = getResources(bundle, request,
>>>>>>>> servletContext);
>>>>>>>> } else {
>>>>>>>> resources = getResources(request);
>>>>>>>> }
>>>>>>>> // evaluate the message
>>>>>>>> String messageString = getMessage(messageKey, null,
>>>>>>>> request,
>>>>>>>> resources);
>>>>>>>>
>>>>>>>> // add it to the redirect parameters
>>>>>>>> if ((messageString != null) && (messageString.length()
>>>>>>>> > 0)) {
>>>>>>>> return messageString;
>>>>>>>> }
>>>>>>>> return null;
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> /**
>>>>>>>> * <p>Look for the ActionMessage in the provided
>>>>>>>> MessageResources.</p> *
>>>>>>>> * @param messageKey the key to look for
>>>>>>>> * @param args the arguments to be used in evaluating
the
>>>>>>>> message * @param request the request being processed
>>>>>>>> * @param resources the application's message resources
>>>>>>>> * @return the message formed from the given ActionMessage
>>>>>>>> */
>>>>>>>> protected String getMessage(String messageKey,
>>>>>>>> Object[] args,
>>>>>>>> HttpServletRequest request,
>>>>>>>> MessageResources resources)
{
>>>>>>>> if (messageKey == null) {
>>>>>>>> //log.warn("Call to getMessage() with a null
>>>>>>>> messageKey."); return null;
>>>>>>>> }
>>>>>>>>
>>>>>>>> String result = null;
>>>>>>>> try {
>>>>>>>> // first, get the locale from the request
>>>>>>>> Locale userLocale = getLocale(request);
>>>>>>>>
>>>>>>>> // then, get the message
>>>>>>>> if (args == null) {
>>>>>>>> result = (resources.getMessage(userLocale,
>>>>>>>> messageKey));
>>>>>>>> } else {
>>>>>>>> result = (resources.getMessage(userLocale,
>>>>>>>> messageKey,
>>>>>>>> args));
>>>>>>>> }
>>>>>>>> } catch (Exception e) {
>>>>>>>> //log.error("Exception while looking for
>>>>>>>> message.", e);
>>>>>>>> }
>>>>>>>> return result;
>>>>>>>> }
>>>>>>>>
>>>>>>>> /**
>>>>>>>> * <p>Return the default message resources for the
current
>>>>>>>> module.</p> *
>>>>>>>> * @param request The servlet request we are processing
>>>>>>>> */
>>>>>>>> protected MessageResources getResources(HttpServletRequest
>>>>>>>> request) {
>>>>>>>>
>>>>>>>> return ((MessageResources)
>>>>>>>> request.getAttribute(Globals.MESSAGES_KEY));
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> /**
>>>>>>>> * <p>Return the specified message resources for
the
>>>>>>>> current module.</p> *
>>>>>>>> * @param bundle The key specified in the
>>>>>>>> * <code><message-resources></code>
element for the
>>>>>>>> * requested bundle
>>>>>>>> * @param request The servlet request we are processing
>>>>>>>> * @param servletContext the current {@link
>>>>>>>> ServletContext} */
>>>>>>>> protected MessageResources getResources(String bundle,
>>>>>>>> HttpServletRequest
>>>>>>>> request,
>>>>>>>> ServletContext
>>>>>>>> servletContext) {
>>>>>>>>
>>>>>>>> // Identify the current module
>>>>>>>> ModuleConfig moduleConfig =
>>>>>>>> ModuleUtils.getInstance().getModuleConfig(
>>>>>>>> request, servletContext);
>>>>>>>>
>>>>>>>> // Return the requested message resources instance
>>>>>>>> return ((MessageResources) servletContext.getAttribute
>>>>>>>> (bundle + moduleConfig.getPrefix()));
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>>For additional commands, e-mail: user-help@struts.apache.org
>>>>
>>>>
>>>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
|