velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve O'Hara" <soh...@pivotal-solutions.co.uk>
Subject RE: Velocimacro problem evaluating variable value
Date Mon, 11 Jul 2005 13:39:18 GMT
I appreciate that the Velocity parser is maybe creating the Java expression
"this"=="this" but you're making an assumption, one that may not hold true
forever.  It may well be evaluating this.toString()=="this"

For this reason, you should NEVER compare strings using "==" and is a common
Java newbie pitfall. This equality check is unreliable because it is
comparing the object references, not their contents.

In some cases it may give the desired result but in others it will not, so
as a rule, you should use the methods provided - after all, why does the
String object have an equals method if it didn't need it?

Here are two articles explaining why you shouldn't use "==" for Strings;

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=58
http://webhome.idirect.com/~mdevoy/ICS4MI/notes/notes%20java%20strings.htm


-----Original Message-----
From:
velocity-user-return-16354-sohara=pivotal-solutions.co.uk@jakarta.apache
.org
[mailto:velocity-user-return-16354-sohara=pivotal-solutions.co.uk@jakart
a.apache.org]On Behalf Of Dimitrios Kolovos
Sent: 11 July 2005 13:10
To: Velocity Users List
Subject: Re: Velocimacro problem evaluating variable value


== operator works fine for strings and offers a more compact syntax than
equalsIgnoreCase

Dimitrios

Steve O'Hara wrote:

>Chris,
>
>Firstly, your HTML syntax is not correct (selected="selected") but also,
>remember that the "==" causes an object compare - you should force a string
>compare by using the following;
>
>#if($selected.equalsIgnoreCase("Dr")) selected #end
>
>Steve
>
>
>-----Original Message-----
>From:
>velocity-user-return-16352-sohara=pivotal-solutions.co.uk@jakarta.apache
>.org
>[mailto:velocity-user-return-16352-sohara=pivotal-solutions.co.uk@jakart
>a.apache.org]On Behalf Of Richard Dean
>Sent: 11 July 2005 12:25
>To: Velocity Users List
>Subject: Re: Velocimacro problem evaluating variable value
>
>
>Hi Chris,
>
>Think it might just be that you are missing an '=' sign :
>
>#if($selected == "Dr") selected = "selected" #end
>rather than
>
>#if($selected = "Dr") selected= "selected" #end
>
>Richard
>
>On 7/11/05, Townson, Chris <C.Townson@nature.com> wrote:
>
>
>>Hi -
>>
>>In my VM_global_library, I have the following simple macro to create a
>>drop-down list of name titles for HTML forms:
>>
>>#*
>>* makeTitlesDropDown
>>*
>>* Macro to create a select + options drop-down list of name titles
>>* Does not include a label for the select box, because we might want this
>>elsewhere
>>* Takes three parameters:
>>* var STRING $id: value of the id for the select box
>>* var STRING $name: value of the name attribute for the select box
>>* var STRING $selected: the name title value to be set as pre-selected
>>*#
>>#macro ( makeTitlesDropDown $id $name $selected )
>><select id="$id" name="$name">
>><option value="Dr"#if($selected = "Dr")
>>selected="selected"#end>Dr</option>
>><option value="Prof"#if($selected = "Prof")
>>selected="selected"#end>Prof</option>
>><option value="Mr"#if($selected = "Mr")
>>selected="selected"#end>Mr</option>
>><option value="Mrs"#if($selected = "Mrs")
>>selected="selected"#end>Mrs</option>
>><option value="Miss"#if($selected = "Miss")
>>selected="selected"#end>Miss</option>
>><option value="Ms"#if($selected = "Ms")
>>selected="selected"#end>Ms</option>
>></select>
>>#end
>>
>>I then call this with the following:
>>#makeTitlesDropDown ( "title" "title" "Mr" )
>>
>>The select list comes out fine, except for the fact that the third
>>parameter
>>- which is used to pre-select a particular option - is not being picked up
>>/
>>evaluated as expected.
>>
>>Is there anything really obvious that I am doing wrong here?? :D
>>
>>Thanks,
>>
>>Chris
>>
>>
>>
>>
>>
>***************************************************************************
*
>****
>
>
>>DISCLAIMER: This e-mail is confidential and should not be used by anyone
>>who is
>>not the original intended recipient. If you have received this e-mail in
>>error
>>please inform the sender and delete it from your mailbox or any other
>>storage
>>mechanism. Neither Macmillan Publishers Limited nor any of its agents
>>accept
>>liability for any statements made which are clearly the sender's own and
>>not
>>expressly made on behalf of Macmillan Publishers Limited or one of its
>>agents.
>>Please note that neither Macmillan Publishers Limited nor any of its
>>agents
>>accept any responsibility for viruses that may be contained in this e-mail
>>or
>>its attachments and it is your responsibility to scan the e-mail and
>>attachments (if any). No contracts may be concluded on behalf of Macmillan
>>Publishers Limited or its agents by means of e-mail communication.
>>Macmillan
>>Publishers Limited Registered in England and Wales with registered number
>>785998
>>Registered Office Brunel Road, Houndmills, Basingstoke RG21 6XS
>>
>>
>>
>>
>***************************************************************************
*
>****
>
>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>>
>>
>>
>>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>
>
>
>

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






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