Here is my object class:
public class Address
{
public final String line1;
public final String town;
public final String postcode;
public Address(final String line1, final String town, final String postcode)
{
this.line1 = line1;
this.town = town;
this.postcode = postcode;
}
}
I add it to the velocity context like this:
Address theAddress = new Address("123 Fake St", "Springfield", "SP123");
context.put("TheAddress", theAddress);
However, when writing the template, the following will not render the address fields (however, it works fine when I add getters to the Address class)
<Address>
<Line1>${TheAddress.line1}</Line1>
<Town>${TheAddress.town}</Town>
<Postcode>${TheAddress.postcode}</Postcode>
</Address>
Is it possible to access public fields on objects from Velocity without adding getters?
Not by default. You need to configure a different Uberspect implementation.