This is the ztemplates changelog. Here I will keep you informed about the changes I am currently working on. It also contains the changelog for unreleased versions, so you can see what's coming next.
snapshot available from https://oss.sonatype.org/content/repositories/snapshots/org/ztemplates/ztemplates/
ztemplates-cms-1.0.0-SNAPSHOT (Not yet released)
- deployed first ztemplates CMS workspace
ztemplates-3.0.0-SNAPSHOT (Not yet released)
- added servlet 3.0 web-fragments to make configuration easy
- added ZIRenderDecorator to annotation @ZRender to allow a decorator to be called when exposing with render=true
- added support for ZForm and ZFormList in forms, to allow dynamic forms.
- added ZIMarshaller and ZIFormatter and diverse implementations for modular and reusable Properties
- change ZIFormAction no longer has a type parameter
- removed method ZIFormAction.beforeForm because form could be named other than "form" and would require inutile override of beforeForm
- added class ZTemplatesRunnable so you can use ztemplates outside a http request, in tests, jobs etc.
- removed class ZISecureUrlDecorator, specify the complete url now
- removed ZIFormAction.getForm() because now the field can be accessed directly by the framework
- added support for multiple forms in the same action, use ZMatch annotation
- added ZPropertyException to ZProperty.parse/getValue/getValues method to allow better automatic error handling in validations.
- added methods ZIFormService.serializeForm() and deserializeForm
- refactored ZMessages
- added class ZMessagesJSON that converts the messages to JSON
- added ZProperty.updateValue and updateStringValues methods. These aid integration with zdependency framework for form value updates
- added ZIRenderService method public T createRenderPojo(Class<T> clazz) to add spring support for render pojos. Now you can create smart pojos if you must.
- added interface ZIActiveView that provides a beforeRendering() method to render pojos. The callback is called in the rendering process before the values are exposed to the template.
- added support for boolean and long parameter value injection in actions.
- added annotation ZMatch.requiresProtocol (@ZMatch.Protocol.HTTP/HTTPS) where you can specify that a action needs to be called under a specified protocol. If not sends a redirect to the correct protocol.
- added init property (servletContext.getInitParameter()) 'ztemplates.url.prefix.https' and 'zemplates.url.prefix.http' that are added when creating urls with ZIActionService. If set these are propended to urls. If Action is annotated with @ZSecure it will use https otherwise http.
- added property ztemplatesCssDigest that can be used from templates when ZRenderEngine.zscript is set to true to reload ztemplates.css from the browser only if content changed.
- added support for jquery.ajax 'feature' that creates parameter names like 'name'. ztemplates will remove the trailing so you can use a private String name in your actions code to match that value.
- now can use private fields in Actions for request parameters, no need to declare getter and setter anymore
- added method ZIRenderService.render(JSONArray)
- added support for context parameter property "ztemplates.devMode" (servletContext.getInitParameter("ztemplates.devMode")) that disables as many caches as possible to support tools like JRebel for no redeploy
- added devMode /ztemplates/devMode/refresh url to refresh most cached data, like url match tree
- added devMode /ztemplates/devMode/actions to show actions and matched urls
- added support for Lists of ZIForms in Forms -> dynamic forms
- added support for spring @Component annotation for classes annotated with @ZScriptDefinition
- Fixed a bug in zscript.js related to console output
- Added method render with parameter JSONObject to ZIServletService
- added public void initPropertyNames(ZIForm form, String formId) to ZIFormService to allow unique ids in forms when using multiple forms on the same page
- fixed a bug that occurs when one declares a public field and a getter for form property or operation
- now can expose private fields in view pojos, takes precedence over methods
- added SPRING_NAME constants to spring compatible beans/services
- one change in how ZFormProperty generates the ids of form input elements, the ids are now compatible with jQuery selectors
- added spring support for ztemplates services, they can now be autowired to action pojos
- fixed a bug that prevented loading the velocity.properties file from a webapps WEB-INF/velocity.properties
- added ztemplates.velocity.nocache=true webapp context parameter to disable cache settings from velocity
- fixed a bug that prevented velocity.properties to be loaded from WEB-INF/velocity.properties
- added support for spring autowiring in action pojos just annotate action with @Component
- added support for afterSubmit callback for form processing
- added validate method to ZOperation
- fixed a bug that happens when creating urls from outside a http request (like a Job, Quartz or Timer)
- removed the @ZSetter @ZGetter annotations, as name convention is sufficient
- added support for using fields in form pojos instead of setters/getters
- added support for using fields in action pojos instead of setters/getters
- added support for exposing fields in render pojos
- validation is now done in separate validation classes
- added separated ZValidator class and ZValidationMessage
- removed validation from Properties
- added classes for html form input tags like input type='text' etc
- added support for UTF-8 encoding which is now the default so update your IDE/maven pom
- every @ZExpose now exposes the original value too, even when render=true, with suffix 'Bean'
- some api refactorings