Try using a Map interface object like HashMap or TreeMap. HashMap<String, String> hm=new HashMap<String, String>(); hm.put("a","apple"); hm.put("b","blueberry"); ctx.put("map",hm);
Then in Velocity: #foreach ($key in $map.keySet()) $key $map.get($key) #end Barbara Baughman X2157 On Wed, 7 Jun 2006, Keith R. Bennett wrote: > What Velocity template code can I use to get a list of keys and iterate > over that list, getting the value corresponding to each key? Here is > what I've tried so far: > > Before calling Velocity, I place the list of keys plus each key/value > pair in the context. For example: > > -- > String [] letters = { "a", "b" }; > context.put("letters", letters); > context.put("a", "apple"); > context.put("b", "blueberry"); > -- > > In the template I have: > > -- > $a > $b > > #foreach ( $letter in $letters ) > $letter > ${${letter}} ## <-- This is the line in question > #end > -- > > However, the output is: > > -- > apple > blueberry > > a > ${a} > b > ${b} > -- > > The ${a} and ${b} above should be apple and blueberry instead. > > What can I use in the line in question to dereference the reference? > > Also, is there a better way of accomplishing my goal, which is this?: > > I have an app that will have database records of arbitrary type. The > record metadata allows me to get the field names with which to populate > the Velocity context. The record itself has, of course, the data. I > want the Velocity template designer to be able to loop through the > fields in the database record without knowing its format at design time, > as in: > > #foreach ($fieldName in $field_names) > <$fieldname> > ... ## put the field's value here, as in my vain attempt above > ## with ${${fieldname}} > </$fieldname > #end > > The data record is not a Java object with named field member variables, > so I can't use the Java Bean approach. Perhaps I could create a class > dynamically at runtime, but I expect this would be overkill. > > Thanks for any help you can offer. > > - Keith > > > --------------------------------------------------------------------- > 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]