You can call any public method from any public class. The final Velocity rendering will always be the toString version of the output. I can't think of a Velocity application that would not, in the end, need a String representation, so your complaint about the toString rendering doesn't make sense to me.

However, the toString rendering has caused me some problems with Velocity when I call the output of one method within another method.

For example:
#if ($account.isActive($user.usertype))

In this case, the isActive method expects an int value, and the getUsertype method returns an int. However, $user.usertype is rendered by Velocity as a String, which causes this statement to fail. This can either be handled by having a public overload method that takes a String, or a method that will convert a String to the class expected by the calling method. Or create a wrapper class that includes both the account and user objects and a method that determines the isActive status knowing the account and user information. I'm sure other solutions can come to mind.

I don't know if this is at the root of your question, but I thought I'd mention this.

Barbara Baughman
Systems Analyst
Information Security
972-883-2157


On 6/1/11 9:53 PM, Logan Stinger wrote:
The class is very simple right now, public class with 5 public getters and 
setters.  Nothing else to it.  I've tried sticking a few other classes in the 
context to test them.  I have been unable to get anything but the toString 
representation of any of them.

On Jun 1, 2011, at 5:15 PM, Nathan Bubna wrote:

The class of the object and the method itself must be declared public.

On Wed, Jun 1, 2011 at 1:38 PM, Logan Stinger<[email protected]>  wrote:

I have the following code:

…

List<ICODocument>  history =
repository.getDocumentHistoryForId("8B2F2F53-7DEA-45B6-84BA-60F2FA11F07D");

context.put("documentHistory", history);



Then in my notes.vm file I have the following:

#foreach($doc in $response.response.get("documentHistory"))

$doc

#end



The rendered output is what I would expect.  However, I don’t want to see
the toString() representation of my object.  I want to see the value of a
particular method call on my object.



So I changed my notes.vm to be this:

#foreach($doc in $response.response.get("documentHistory"))

$doc.isMax()

#end



In this case my rendered output is simply:

$doc.isMax() $doc.isMax()



I was under the impression that I could add any java object to the velocity
context and call any method on that object in my velocity template.  Am I
misunderstanding?





*Logan Stinger*

*[image: Description: bluelid_logo_small]*

* *

(515) 281-6702

(515) 822-8212

[email protected]






---------------------------------------------------------------------
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]

Reply via email to