On Fri, Jun 3, 2011 at 8:50 AM, Barbara Baughman <[email protected]> wrote:
> 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.

Barbara, that shouldn't happen.  Velocity should not be converting
$user.usertype to a String unless it is rendering it.  If it is being
passed to a method it should look for isActive(int), not
isActive(String).

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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to