[Sourceforge RSS Feed|https://sourceforge.net/export/rss2_keepsake.php?group_id=157577]

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|https://sourceforge.net/projects/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 new createJavascriptId method to ZIRenderService
* added init property (servletContext.getInitParameter()) 'ztemplates.devMode.html.comments' that adds html comments with debug infos to the output. Comments will be generated only when ZRenderer.mimeType is set, and only for mime-type text/html and text/javascript.
* 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.

__ztemplates-2.4.0 (released)__ 

* 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

__ztemplates-2.3.1 (Released)__ 

* Fixed a bug in zscript.js related to console output
* Added method render with parameter JSONObject to ZIServletService

__ztemplates-2.3.0 (Released)__ 

* added zscript.js: a small javascript framework for [creating ajax-based applications|BrowserBasedJavascript]
* added support for zscript javascript library, consists of annotation @ZScriptDefinition
* 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

__ztemplates-2.2.1 (Released)__
* one change in how ZFormProperty generates the ids of form input elements, the ids are now compatible with jQuery selectors

__ztemplates-2.2.0 (Released)__
* 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

__ztemplates-2.1.0 (Released)__
* 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
* ZTemplates.getRenderService().createJavaScriptId() now creates reproductible ids, to facilitate selenium tests
* ZFormText now uses property name to create JavaScript id, better for selenium tests

__ztemplates-2.0.0 (Released)__

* 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
* added better support for javaScript declarations
* every @ZExpose now exposes the original value too, even when render=true, with suffix 'Bean'
* some api refactorings

![Changelog Older Versions]