You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-user@tomcat.apache.org by Marius Botha <ma...@gmail.com> on 2007/06/26 15:40:29 UTC

Resource Bundle Problem (sometimes)

Hi there,

I have my own tag (extending BodyTagSupport) in which I do the following:

<code>
ResourceBundle resources = ResourceBundle.getBundle("application");
out.print(resources.getString("key"));
</code>

This works great ... most of the time. However, the moment I put this tag
into another tag that I wrote (a Data Table Tag - extending LoopTagSupport)
I get the following exception(below). For some reason it seems to find the "
application.properties" resource file when my tag is on its own somewhere on
the JSP, but when I try to use it in another tag, it doesn't work. Any
ideas?

Much appreciated.

Marius Botha

Exception:
java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key
java.util.ResourceBundle.getObject(ResourceBundle.java:326)
java.util.ResourceBundle.getString(ResourceBundle.java:286)
com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java:32)

Re: Resource Bundle Problem (sometimes)

Posted by Marius Botha <ma...@gmail.com>.
I solved the problem!!! Because the tag was used inside another tag (that
extends LoopTagSupport) this caused the expression (or rather the setter
method) to resolve to spaces for the very first iteration of the loop. As a
result the tag was trying to look up empty spaces in the resource bundle and
failed. I now trim and test for this in the tag so it just prints an empty
space when that happens and then all the other iterations worked
successfully.

Quite a stupid mistake that took a long time to resolve... Thanks for the
input and help!


On 6/27/07, Marius Botha <ma...@gmail.com> wrote:
>
> I tried both the super.pageContext and just pageContext, but neither
> works. Is there any other way to do this? (In the examples people use other
> classes than ExpressionEvaluatorManager so maybe I should use another one?).
> What I cannot understand is why the same tag works fine on other pages, but
> the moment I use it inside another tag the setter method sets a null/empty.
> I have many other custom tags though that work just fine - just this one
> (driving me crazy).
>
> Shall I post the source?
>
>
>  On 6/26/07, Kris Schneider <kr...@dotech.com> wrote:
> >
> > Quoting Marius Botha <ma...@gmail.com>:
> >
> > > Thanks for the quick response.
> > >
> > > It seems like it could actually be the setter method that is the
> > culprit
> > > rather than the "resources.getString("key"));". If I do System.outs on
> > "key"
> > > (see below) I get the correct value every time I use the tag on its
> > own in a
> > > JSP (i.e. both key1 and key2 has a value), but the moment I use it in
> > my
> > > other tag the second value is null/empty. I think it's got something
> > to do
> > > with scope maybe ... but unsure what else to do as my other tags work
> > fine
> > > it is just this one...
> > >
> > >  public void setKey(String key) throws JspException {
> > >   System.out.println("key1="+key);
> > >   this.key = (String)ExpressionEvaluatorManager.evaluate("key", key,
> > > String.class, this, super.pageContext);
> > >   System.out.println("key2="+this.key);
> > >  }
> >
> > Why are you passing " super.pageContext" instead of just "pageContext"?
> >
> > > Thanks again, much appreciated.
> > >
> > > -----Original Message-----
> > > Kris Schneider <kris@dotech.com > wrote:
> > >
> > > The stack trace seems to indicate that the property file is located
> > just
> > > fine,
> > > but that the file does not contain a key called "key". If the property
> > file
> > > could not be located, ResourceBundle.getBundle() should be throwning
> > the
> > > exception, not ResourceBundle.getString().
> > >
> > >
> > > -----Original Message-----
> > > From: Marius Botha
> > > [*mailto: mariusbotha76@gmail.com*<ma...@gmail.com>]
> > >
> > > Sent: 26 June 2007 03:40
> > > To: taglibs-user@jakarta.apache.org
> > > Subject: Resource Bundle Problem (sometimes)
> > >
> > > Hi there,
> > >
> > > I have my own tag (extending BodyTagSupport) in which I do the
> > following:
> > >
> > > <code>
> > > ResourceBundle resources = ResourceBundle.getBundle("application");
> > > out.print(resources.getString("key"));
> > > </code>
> > >
> > > This works great ... most of the time. However, the moment I put this
> > tag
> > > into another tag that I wrote (a Data Table Tag - extending
> > LoopTagSupport)
> > > I get the following exception(below). For some reason it seems to find
> > the "
> > >
> > > application.properties" resource file when my tag is on its own
> > somewhere on
> > > the JSP, but when I try to use it in another tag, it doesn't work. Any
> > > ideas?
> > >
> > > Much appreciated.
> > >
> > > Marius Botha
> > >
> > > Exception:
> > >
> > > java.util.MissingResourceException : Can't find resource for bundle
> > > java.util.PropertyResourceBundle, key
> > > java.util.ResourceBundle.getObject(ResourceBundle.java:326)
> > > java.util.ResourceBundle.getString(ResourceBundle.java:286)
> > > com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java
> > :32)
> >
> > --
> > Kris Schneider <ma...@dotech.com>
> > D.O.Tech       < http://www.dotech.com/>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
> >
> >
>

Re: Resource Bundle Problem (sometimes)

Posted by Marius Botha <ma...@gmail.com>.
I tried both the super.pageContext and just pageContext, but neither works.
Is there any other way to do this? (In the examples people use other classes
than ExpressionEvaluatorManager so maybe I should use another one?). What I
cannot understand is why the same tag works fine on other pages, but the
moment I use it inside another tag the setter method sets a null/empty. I
have many other custom tags though that work just fine - just this one
(driving me crazy).

Shall I post the source?


On 6/26/07, Kris Schneider <kr...@dotech.com> wrote:
>
> Quoting Marius Botha <ma...@gmail.com>:
>
> > Thanks for the quick response.
> >
> > It seems like it could actually be the setter method that is the culprit
> > rather than the "resources.getString("key"));". If I do System.outs on
> "key"
> > (see below) I get the correct value every time I use the tag on its own
> in a
> > JSP (i.e. both key1 and key2 has a value), but the moment I use it in my
> > other tag the second value is null/empty. I think it's got something to
> do
> > with scope maybe ... but unsure what else to do as my other tags work
> fine
> > it is just this one...
> >
> >  public void setKey(String key) throws JspException {
> >   System.out.println("key1="+key);
> >   this.key = (String)ExpressionEvaluatorManager.evaluate("key", key,
> > String.class, this, super.pageContext);
> >   System.out.println("key2="+this.key);
> >  }
>
> Why are you passing "super.pageContext" instead of just "pageContext"?
>
> > Thanks again, much appreciated.
> >
> > -----Original Message-----
> > Kris Schneider <kr...@dotech.com> wrote:
> >
> > The stack trace seems to indicate that the property file is located just
> > fine,
> > but that the file does not contain a key called "key". If the property
> file
> > could not be located, ResourceBundle.getBundle() should be throwning the
> > exception, not ResourceBundle.getString().
> >
> >
> > -----Original Message-----
> > From: Marius Botha
> > [*mailto:mariusbotha76@gmail.com*<ma...@gmail.com>]
> >
> > Sent: 26 June 2007 03:40
> > To: taglibs-user@jakarta.apache.org
> > Subject: Resource Bundle Problem (sometimes)
> >
> > Hi there,
> >
> > I have my own tag (extending BodyTagSupport) in which I do the
> following:
> >
> > <code>
> > ResourceBundle resources = ResourceBundle.getBundle("application");
> > out.print(resources.getString("key"));
> > </code>
> >
> > This works great ... most of the time. However, the moment I put this
> tag
> > into another tag that I wrote (a Data Table Tag - extending
> LoopTagSupport)
> > I get the following exception(below). For some reason it seems to find
> the "
> >
> > application.properties" resource file when my tag is on its own
> somewhere on
> > the JSP, but when I try to use it in another tag, it doesn't work. Any
> > ideas?
> >
> > Much appreciated.
> >
> > Marius Botha
> >
> > Exception:
> >
> > java.util.MissingResourceException: Can't find resource for bundle
> > java.util.PropertyResourceBundle, key
> > java.util.ResourceBundle.getObject(ResourceBundle.java:326)
> > java.util.ResourceBundle.getString(ResourceBundle.java:286)
> > com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java
> :32)
>
> --
> Kris Schneider <ma...@dotech.com>
> D.O.Tech       <http://www.dotech.com/>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>
>

Re: Resource Bundle Problem (sometimes)

Posted by Kris Schneider <kr...@dotech.com>.
Quoting Marius Botha <ma...@gmail.com>:

> Thanks for the quick response.
> 
> It seems like it could actually be the setter method that is the culprit
> rather than the "resources.getString("key"));". If I do System.outs on "key"
> (see below) I get the correct value every time I use the tag on its own in a
> JSP (i.e. both key1 and key2 has a value), but the moment I use it in my
> other tag the second value is null/empty. I think it's got something to do
> with scope maybe ... but unsure what else to do as my other tags work fine
> it is just this one...
> 
>  public void setKey(String key) throws JspException {
>   System.out.println("key1="+key);
>   this.key = (String)ExpressionEvaluatorManager.evaluate("key", key,
> String.class, this, super.pageContext);
>   System.out.println("key2="+this.key);
>  }

Why are you passing "super.pageContext" instead of just "pageContext"?

> Thanks again, much appreciated.
> 
> -----Original Message-----
> Kris Schneider <kr...@dotech.com> wrote:
> 
> The stack trace seems to indicate that the property file is located just
> fine,
> but that the file does not contain a key called "key". If the property file
> could not be located, ResourceBundle.getBundle() should be throwning the
> exception, not ResourceBundle.getString().
> 
> 
> -----Original Message-----
> From: Marius Botha
> [*mailto:mariusbotha76@gmail.com*<ma...@gmail.com>]
> 
> Sent: 26 June 2007 03:40
> To: taglibs-user@jakarta.apache.org
> Subject: Resource Bundle Problem (sometimes)
> 
> Hi there,
> 
> I have my own tag (extending BodyTagSupport) in which I do the following:
> 
> <code>
> ResourceBundle resources = ResourceBundle.getBundle("application");
> out.print(resources.getString("key"));
> </code>
> 
> This works great ... most of the time. However, the moment I put this tag
> into another tag that I wrote (a Data Table Tag - extending LoopTagSupport)
> I get the following exception(below). For some reason it seems to find the "
> 
> application.properties" resource file when my tag is on its own somewhere on
> the JSP, but when I try to use it in another tag, it doesn't work. Any
> ideas?
> 
> Much appreciated.
> 
> Marius Botha
> 
> Exception:
> 
> java.util.MissingResourceException: Can't find resource for bundle
> java.util.PropertyResourceBundle, key
> java.util.ResourceBundle.getObject(ResourceBundle.java:326)
> java.util.ResourceBundle.getString(ResourceBundle.java:286)
> com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java:32)

-- 
Kris Schneider <ma...@dotech.com>
D.O.Tech       <http://www.dotech.com/>

---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-user-help@jakarta.apache.org


Re: Resource Bundle Problem (sometimes)

Posted by Marius Botha <ma...@gmail.com>.
Thanks for the quick response.

It seems like it could actually be the setter method that is the culprit
rather than the "resources.getString("key"));". If I do System.outs on "key"
(see below) I get the correct value every time I use the tag on its own in a
JSP (i.e. both key1 and key2 has a value), but the moment I use it in my
other tag the second value is null/empty. I think it's got something to do
with scope maybe ... but unsure what else to do as my other tags work fine
it is just this one...

 public void setKey(String key) throws JspException {
  System.out.println("key1="+key);
  this.key = (String)ExpressionEvaluatorManager.evaluate("key", key,
String.class, this, super.pageContext);
  System.out.println("key2="+this.key);
 }

Thanks again, much appreciated.

-----Original Message-----
Kris Schneider <kr...@dotech.com> wrote:

The stack trace seems to indicate that the property file is located just
fine,
but that the file does not contain a key called "key". If the property file
could not be located, ResourceBundle.getBundle() should be throwning the
exception, not ResourceBundle.getString().


-----Original Message-----
From: Marius Botha [*mailto:mariusbotha76@gmail.com*<ma...@gmail.com>]

Sent: 26 June 2007 03:40
To: taglibs-user@jakarta.apache.org
Subject: Resource Bundle Problem (sometimes)

Hi there,

I have my own tag (extending BodyTagSupport) in which I do the following:

<code>
ResourceBundle resources = ResourceBundle.getBundle("application");
out.print(resources.getString("key"));
</code>

This works great ... most of the time. However, the moment I put this tag
into another tag that I wrote (a Data Table Tag - extending LoopTagSupport)
I get the following exception(below). For some reason it seems to find the "

application.properties" resource file when my tag is on its own somewhere on
the JSP, but when I try to use it in another tag, it doesn't work. Any
ideas?

Much appreciated.

Marius Botha

Exception:

java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key
java.util.ResourceBundle.getObject(ResourceBundle.java:326)
java.util.ResourceBundle.getString(ResourceBundle.java:286)
com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java:32)

Re: Resource Bundle Problem (sometimes)

Posted by Kris Schneider <kr...@dotech.com>.
Quoting Marius Botha <ma...@gmail.com>:

> Hi there,
> 
> I have my own tag (extending BodyTagSupport) in which I do the following:
> 
> <code>
> ResourceBundle resources = ResourceBundle.getBundle("application");
> out.print(resources.getString("key"));
> </code>
> 
> This works great ... most of the time. However, the moment I put this tag
> into another tag that I wrote (a Data Table Tag - extending LoopTagSupport)
> I get the following exception(below). For some reason it seems to find the "
> application.properties" resource file when my tag is on its own somewhere on
> the JSP, but when I try to use it in another tag, it doesn't work. Any
> ideas?
> 
> Much appreciated.
> 
> Marius Botha
> 
> Exception:
> java.util.MissingResourceException: Can't find resource for bundle
> java.util.PropertyResourceBundle, key
> java.util.ResourceBundle.getObject(ResourceBundle.java:326)
> java.util.ResourceBundle.getString(ResourceBundle.java:286)
> com.workpool.struts.component.html.MessageTag.doEndTag(MessageTag.java:32)

The stack trace seems to indicate that the property file is located just fine,
but that the file does not contain a key called "key". If the property file
could not be located, ResourceBundle.getBundle() should be throwning the
exception, not ResourceBundle.getString().

-- 
Kris Schneider <ma...@dotech.com>
D.O.Tech       <http://www.dotech.com/>

---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-user-help@jakarta.apache.org