2.3.9
Date of release: 2007-01-23
This release contains support for accessing JDK 1.5 enums and public fields of classes from the templates through the BeansWrapper.
Changes on the Java side
-
BeansWrapper can now expose public fields of objects to the template if you call the setExposeFields(true) on it. More info...
-
BeansWrapper can now pass any sequence model to Java methods expecting a java.util.Collection or a native Java array (including primitive arrays). More info...
-
BeansWrapper can now pass any sequence and collection model to Java methods expecting a java.lang.Iterable. More info...
-
BeansWrapper can now unwrap numeric models into correct target types when passing to Java methods expecting a primitive or boxed number. Use of various expert built-ins to manually coerce the types becomes mostly unnecessary.
-
Fixed a bug where BeansWrapper would pass a java.util.Collection to a method expecting a java.util.Set in certain rare cases. More info...
-
Support for JDK 1.5 enums in BeansWrapper and DefaultObjectWrapper. By calling the getEnumModels() method, you can retrieve a hash model that is keyed by class names and allows access to enumerated values. I.e. if you bind this hash model under name enums in the data-model, you can write expressions like enums["java.math.RoundingMode"].UP in the template. The enum values can be used as scalars and support equality and inequality comparisons. More info...
-
freemarker.ext.rhino.RhinoWrapper now correctly translates Rhino Undefined instance, UniqueTag.NOT_FOUND, and UniqueTag.NULL to FreeMarker undefined value.