Spring-based pet clinic app with HtmlFlow views (January 23, 2020)

We have provided in github.com/xmlet/spring-petclinic a standard implementation of the sample Spring-based pet clinic web application integrated with HtmlFlow views. We have replaced the Thymeleaf template engine with HtmlFlow. This project defines templates as first-class functions and exploit all the Java language features and suppress auxiliary Spring infrastructures, such as ModelAndView, ViewResolver and others. Thus, we removed from the unit tests all validations regarding these mechanics.
Read more...


Release 3.5 (January 13, 2020)

Downgraded to target Java runtime 1.8. Some applications, such as spring-comparing-template-engines don’t support higher versions.
Read more...


Release 3.4 (December 18, 2019)

First release of Flowifier an HTML to HtmlFlow translator, developed by Julien Gouesse. Issue 43
Read more...


Release 3.3 (August 1, 2019)

Upgrade to Java 11. Upgrade to HtmlApiFasterApi version 1.7. New HtmlPartials class in unit testes project with sample use cases to include in a paper for WebIst. Feature: disallow the use of chained calls to dynamic() due to unexpected cache behaviors. Feature: add support to disable indentation of HTML output. New setIndented(boolean) setter on HtmlView and corresponding property in HtmlVisitorCache. Fix support to use pre elements in body as described on issue #46 with the...
Read more...


Release 3.2 (November 21, 2018)

Make views immutable.
Read more...


Release 3.1 (November 15, 2018)

Add support for non thread-safe views. Now, in order to use the same view by multiple threads you should call the threadSafe() method. Check the unit test testDivDetailsBindingWithRender that renders 4 different context models in parallel with the same view.
Read more...


Release 3.0 (November 1, 2018)

Improved performance. HtmlFlow is on this date the most performant template engine and Java DSL for HTML. Replaced the method º() by __(). New static factory methods view() of the new classes DynamicHtml and StaticHtml Removed the static factory methods html(), head() and div() from HtmlView. Html code is emitted on the fly when the methods of HtmlApi (e.g. html(), div(), h1(), etc) are called. Now HtmlView is just a container of a template function...
Read more...


Release 2.1 (August 1, 2018)

HtmlFlow version 2.1 was updated to release 1.0.10 of com.github.xmlet.HtmlApi and introduces a couple of new features: New render() which produces a String rather then writing to a PrintStream. This render() uses internally a StringBuilder and shows better performance than the write() approach. To allow HtmlView being a parent element of Html we made HtmlView<T> extend AbstractElement<HtmlView<T>, Element> and turn it compatible with Element. Yet, it does not support accept(ElementVisitor visitor) nor cloneElem(). Fix Html...
Read more...


Release 2.0 (March 1, 2018)

HtmlFlow version 2.0 has full support for all existing HTML5 elements and attributes. Moreover all attributes are strongly typed with enumerated types which restrict accepted values. Now HtmlFlow API is constructed with the support of an automated framework xmlet based on an XSD definition of the HTML5 syntax and rules. Thus we remove the package htmlflow.attributes and htmlflow.elements, which have been replaced by the types defined in org.xmlet.htmlapi library. This new approach forces HtmlFlow API...
Read more...


Release 1.2 (September 1, 2017)

Refactor unit tests to increase code coverage and to load the expected HTML output from the resources. Include HtmlFlow in SonarCloud.io to analyze code quality. Fix of Issue 14 – Header.txt can’t be loaded from resources.
Read more...


Release 1.2 (September 1, 2017)

Read HTML header from a template resource located in templates/HtmlView-Header.txt. This template is bundled and loaded form the HtmlFlow JAR by default. However, you are free to use your own header template file templates/HtmlView-Header.txt and include its location in the classpath to replace the existing one. This also solves the #16 Issue.
Read more...