velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nathan Bubna" <nbu...@gmail.com>
Subject Re: Problem getting value from Map.
Date Fri, 06 Oct 2006 15:15:39 GMT
your class must be declared as "public"

On 10/6/06, Daryl Beattie <DarylB@date.com> wrote:
> Hi Velocity people,
>
>
>
>             Okay, first off; I tried searching for answers to this, but
> the mailing list archive is not searchable (in any way that I could
> find), so if this question is a faq, please don't be upset.
>
>             I am having trouble getting a value out of a Map. Every time
> I try, the reference gets printed out as it is. Even normal methods
> don't seem to be functioning consistently.
>
>             I have developed a test case to illustrate my problem. The
> code may look long but it's pretty simple:
>
>
>
> class BO extends BOBase {
>
>   // Empty.
>
> }
>
>
>
> class BOBase extends DataHolder {
>
>   // Empty.
>
> }
>
>
>
> class DataHolder extends HashMap<Name, Value> {
>
>   public Value getA() {
>
>     return this.get(new Name("a")); //$NON-NLS-1$
>
>   }
>
>   @Override
>
>   public Value get(Object key) {
>
>     return super.get(new Name(key.toString()));
>
>   }
>
> }
>
>
>
> class Name {
>
>   String name;
>
>   public Name(String name) {
>
>     this.name = name;
>
>   }
>
>   @Override
>
>   public String toString() {
>
>     return name;
>
>   }
>
>   @Override
>
>   public boolean equals(Object a) {
>
>     return ((a != null) && (a instanceof Name) &&
> a.toString().equals(this.toString()));
>
>   }
>
>   @Override
>
>   public int hashCode() {
>
>     return name.hashCode();
>
>   }
>
> }
>
>
>
> class Value {
>
>   String value;
>
>   public Value(String value) {
>
>     this.value = value;
>
>   }
>
>   @Override
>
>   public String toString() {
>
>     return value;
>
>   }
>
> }
>
>
>
>             And when I run velocity I do this:
>
>
>
> VelocityContext context = new VelocityContext();
>
>
>
> BO test = new BO();
>
> test.put(new Name("a"), new Value("1"));
>
> context.put("bo", test);
>
>
>
> Map<Name, Value> test2 = new HashMap<Name, Value>();
>
> test2.put(new Name("a"), new Value("1"));
>
> context.put("bo2", test2);
>
> context.put("a", new Name("a"));
>
>
>
> context.put("test", new String("Boo!"));
>
>
>
>             My template looks like this:
>
>
>
> $bo.A
>
> $bo.getA()
>
> $bo.get("a")
>
>
>
> $bo2.get($a)
>
>
>
> $test
>
>
>
>             But my output looks like this:
>
>
>
> $bo.A
>
> $bo.getA()
>
> $bo.get("a")
>
>
>
> 1
>
>
>
> Boo!
>
>
>
>             What is going on?
>
>
>
> Sincerely,
>
>
>
>             Daryl.
>
>
>

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


Mime
View raw message