nrw.social ist einer von vielen unabhängigen Mastodon-Servern, mit dem du dich im Fediverse beteiligen kannst.
Wir sind eine freundliche Mastodon Instanz aus Nordrhein-Westfalen. Ob NRW'ler oder NRW-Sympathifanten, jeder ist hier willkommen.

Serverstatistik:

2,8 Tsd.
aktive Profile

#Freshmarker

0 Beiträge0 Beteiligte0 Beiträge heute
Jens<p>Compress Whitespace in FreshMarker</p><p>Whitespace in a template engine like FreshMarker&#39;s is fundamentally different from the rest of the characters outside of it&#39;s language constructs. A considerable amount of whitespace and line breaks are only used to ensure that the structure of the template remains comprehensible to the author.</p><p><a href="https://schegge.de/2025/03/compress-whitespace-in-freshmarker/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/03/compress-wh</span><span class="invisible">itespace-in-freshmarker/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker – compile it! (4)</p><p>A further step on the way to static templates is the automation of their creation. A Maven plugin can be used to convert the FreshMarker template sources into Java source code. Although there are now more modern build tools, Maven is still used in many projects. The first task of the Maven plugin sho</p><p><a href="https://schegge.de/2025/03/freshmarker-compile-it-4/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/03/freshmarker</span><span class="invisible">-compile-it-4/</span></a></p><p><a href="https://nrw.social/tags/BestPractices" class="mention hashtag" rel="tag">#<span>BestPractices</span></a> <a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Maven" class="mention hashtag" rel="tag">#<span>Maven</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker – compile it! (3)</p><p>In the second article on the FreshMarker Compiler, we looked at the implementation of a pretty printer for Template instances. This implementation serves as the basis for the FreshMarker Compiler, which generates Java code from a Template instance. Before we tackle the Compiler, we need to</p><p><a href="https://schegge.de/2025/02/freshmarker-compile-it-3/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/02/freshmarker</span><span class="invisible">-compile-it-3/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/DesignPattern" class="mention hashtag" rel="tag">#<span>DesignPattern</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/CongoCC" class="mention hashtag" rel="tag">#<span>CongoCC</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a> <a href="https://nrw.social/tags/Visitor" class="mention hashtag" rel="tag">#<span>Visitor</span></a></p>
Jens<p>FreshMarker – compile it! (3)</p><p>In the second article on the FreshMarker Compiler, we looked at the implementation of a pretty printer for Template instances. This implementation serves as the basis for the FreshMarker Compiler, which generates Java code from a Template instance. Before we tackle the Compiler, we need to</p><p><a href="https://schegge.de/2025/02/freshmarker-compile-it-3/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/02/freshmarker</span><span class="invisible">-compile-it-3/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/DesignPattern" class="mention hashtag" rel="tag">#<span>DesignPattern</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/CongoCC" class="mention hashtag" rel="tag">#<span>CongoCC</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a> <a href="https://nrw.social/tags/Visitor" class="mention hashtag" rel="tag">#<span>Visitor</span></a></p>
Jens<p>FreshMarker – compile it! (2)</p><p>In the first article on static FreshMarker templates, some basic thoughts were put on paper. This article is intended to set a first milestone on the way to supporting much faster templates than before. As a nice side effect of this initial work, a pretty printer for Fr</p><p><a href="https://schegge.de/2025/02/freshmarker-compile-it-2/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/02/freshmarker</span><span class="invisible">-compile-it-2/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/DesignPattern" class="mention hashtag" rel="tag">#<span>DesignPattern</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Refactoring" class="mention hashtag" rel="tag">#<span>Refactoring</span></a> <a href="https://nrw.social/tags/CongoCC" class="mention hashtag" rel="tag">#<span>CongoCC</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Maven" class="mention hashtag" rel="tag">#<span>Maven</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a> <a href="https://nrw.social/tags/Visitor" class="mention hashtag" rel="tag">#<span>Visitor</span></a></p>
Jens<p>FreshMarker – compile it!</p><p>The template engine FreshMarker occupies a middle position in terms of processing speed for the benchmark displayed on the FreshMarker project page. In line with the concept of a dynamic, expandable engine, a noticeable acceleration of processing is not to be expected. The question therefore arises as to which conc</p><p><a href="https://schegge.de/2025/02/freshmarker-compile-it/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/02/freshmarker</span><span class="invisible">-compile-it/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Refactoring" class="mention hashtag" rel="tag">#<span>Refactoring</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker Features</p><p>The follow-up article on FreshMarker Features took a little longer because there was simply no feature that wanted to manifest itself in a plugin. In the FreshMarker Includes article, the features for activating and deactivating functionalities within FreshMarker were presented. The outlook was given that FreshMarker plugins should also</p><p><a href="https://schegge.de/2025/01/freshmarker-features/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/01/freshmarker</span><span class="invisible">-features/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker Switch On Directive</p><p>Nothing is so good that it can&#39;t be reworked. The switch directive in FreshMarker differed from the FreeMarker variant quite early on. FreshMarker&#39;s switch directive does not have a fall-through mechanism. This mechanism is a legacy of the C language family, whose switch statements with break also found </p><p><a href="https://schegge.de/2025/01/freshmarker-switch-on-directive/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/01/freshmarker</span><span class="invisible">-switch-on-directive/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/CongoCC" class="mention hashtag" rel="tag">#<span>CongoCC</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker Includes (2)</p><p>In the first article on the Include Directive, I showed how this directive can be implemented in FreshMarker. Although additional content can now be inserted into the template, some additional details are still missing. An important detail is the avoidance of recursive includes. These usually never end well. The following template</p><p><a href="https://schegge.de/2025/01/freshmarker-includes-2/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/01/freshmarker</span><span class="invisible">-includes-2/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker Includes</p><p>“By believing passionately in something that still does not exist, we create it. The nonexistent is whatever we have not sufficiently desired.”<br />Franz Kafka</p><p>Some time ago I had the pleasure of giving a talk about FreshMarker at the Java User Group Bielefeld. At this event, the question arose as to why FreshMarker does not </p><p><a href="https://schegge.de/2025/01/freshmarker-includes/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2025/01/freshmarker</span><span class="invisible">-includes/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>Lorem ipsum dolor sit amet</p><p>There was no mistake in the title of this post. Anyone who has looked at the FreshMarker Random plugin recently will probably have discovered the two new built-in sentence and paragraph plugins. These two support the library with the generation of the famous Lorem Ipsum pseudo-texts. Without de</p><p><a href="https://schegge.de/2024/12/lorem-ipsum-dolor-sit-amet/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2024/12/lorem-ipsum</span><span class="invisible">-dolor-sit-amet/</span></a></p><p><a href="https://nrw.social/tags/Algorithmen" class="mention hashtag" rel="tag">#<span>Algorithmen</span></a> <a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Test" class="mention hashtag" rel="tag">#<span>Test</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/SpringBoot" class="mention hashtag" rel="tag">#<span>SpringBoot</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker – Groundhog Day</p><p>The moment is a wonderful thing, but not for software developers, because it keeps on moving. How can you write a test if the value changes with every test run? Functionality has always been an abomination that concealed some form of now. In FreshMarker, for example, this little monster can be found in</p><p><a href="https://schegge.de/2024/12/freshmarker-groundhog-day/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2024/12/freshmarker</span><span class="invisible">-groundhog-day/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Test" class="mention hashtag" rel="tag">#<span>Test</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Junit" class="mention hashtag" rel="tag">#<span>Junit</span></a> <a href="https://nrw.social/tags/JUnit5" class="mention hashtag" rel="tag">#<span>JUnit5</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>FreshMarker Random Plug-In</p><p>The topic of randomness has visited this blog several times. There was a post about the Voses algorithm and random values in JUnit 5 Test. So why not provide random values in FreshMarker. Since random values are rarely needed in templates, this extension is not realized in FreshMarker itself, but in a separat</p><p><a href="https://schegge.de/2024/11/freshmarker-random-plug-in/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2024/11/freshmarker</span><span class="invisible">-random-plug-in/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Random" class="mention hashtag" rel="tag">#<span>Random</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a> <a href="https://nrw.social/tags/Zufall" class="mention hashtag" rel="tag">#<span>Zufall</span></a></p>
Jens<p>FreshMarker I18N</p><p>“Those who know nothing of foreign languages know nothing of their own.”<br />Johann Wolfgang von Goethe</p><p>Internationalization, or I18N for short, is a skill that every modern software must master. Long gone are the days when software could only offer an English only interface.</p><p>Localizable values such as dates and numbers can always be output i</p><p><a href="https://schegge.de/2024/11/freshmarker-i18n/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2024/11/freshmarker</span><span class="invisible">-i18n/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>Trivial Pursuit – API MarkDown (2)</p><p>Fasst drei Jahre nach dem ersten Beitrag zum eigenen API MarktDown ergibt sich ein zweiter Beitrag zum Thema. Bei der Durchsicht der eigenen Projekte fiel auf, dass in dem Projekt rest-markdown-plugin noch immer FreeMarker als Template-Engine verwendet</p><p><a href="https://schegge.de/2023/05/trivial-pursuit-api-markdown-2/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2023/05/trivial-pur</span><span class="invisible">suit-api-markdown-2/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/AsciiDoc" class="mention hashtag" rel="tag">#<span>AsciiDoc</span></a> <a href="https://nrw.social/tags/Asciidoctor" class="mention hashtag" rel="tag">#<span>Asciidoctor</span></a> <a href="https://nrw.social/tags/CongoCC" class="mention hashtag" rel="tag">#<span>CongoCC</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/JavaCC21" class="mention hashtag" rel="tag">#<span>JavaCC21</span></a> <a href="https://nrw.social/tags/MarkDown" class="mention hashtag" rel="tag">#<span>MarkDown</span></a> <a href="https://nrw.social/tags/OpenApi" class="mention hashtag" rel="tag">#<span>OpenApi</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>
Jens<p>Mehr Zeit mit FreshMarker</p><p>Einer der Gründe für die Entwicklung der FreshMarker Bibliothek, war die fehlende Unterstützung der Java Time API in FreeMarker. Daher existierte schon in der ersten Implementierung neben der Unterstützung für java.util.Date, java.sql.Date und java.sql.Time auch eine Unterstützung f</p><p><a href="https://schegge.de/2023/05/mehr-zeit-mit-freshmarker/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2023/05/mehr-zeit-m</span><span class="invisible">it-freshmarker/</span></a></p><p><a href="https://nrw.social/tags/BestPractices" class="mention hashtag" rel="tag">#<span>BestPractices</span></a> <a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Format" class="mention hashtag" rel="tag">#<span>Format</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/LocalDate" class="mention hashtag" rel="tag">#<span>LocalDate</span></a> <a href="https://nrw.social/tags/LocalTime" class="mention hashtag" rel="tag">#<span>LocalTime</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a>-Engine</p>
Jens<p>Telephone Support für FreshMarker</p><p>Hat man eine Idee implementiert, dann ist die nächste oft nicht weit. Die Telephone Bibliothek kann nun schon mit Telefonnummern und Rufnummernblöcken umgehen und bietet Unterstützung für Bean Validation und Jackson. In diesem Beitrag kommt der Support d</p><p><a href="https://schegge.de/2023/04/telephone-support-fuer-freshmarker/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2023/04/telephone-s</span><span class="invisible">upport-fuer-freshmarker/</span></a></p><p><a href="https://nrw.social/tags/AusdemLeben" class="mention hashtag" rel="tag">#<span>AusdemLeben</span></a> <a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Rufnummernblock" class="mention hashtag" rel="tag">#<span>Rufnummernblock</span></a> <a href="https://nrw.social/tags/Telefonnummer" class="mention hashtag" rel="tag">#<span>Telefonnummer</span></a> <a href="https://nrw.social/tags/Telephone" class="mention hashtag" rel="tag">#<span>Telephone</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a>-Engine</p>
Jens<p>Lazy Values mit FreshMarker</p><p>Bei der Arbeit mit Legacy Anwendungen ist es einem Entwickler selten vergönnt, Ideen für eine neue Software zu finden. Hin und wieder zeigt sich aber ein Problem, das auch in anderen Konstellationen auftreten kann. Bei der Arbeit mit der Template Engine FreshMarker müssen bisher alle notwendi</p><p><a href="https://schegge.de/2023/01/lazy-values-mit-freshmarker/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2023/01/lazy-values</span><span class="invisible">-mit-freshmarker/</span></a></p><p><a href="https://nrw.social/tags/BestPractices" class="mention hashtag" rel="tag">#<span>BestPractices</span></a> <a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Lazy" class="mention hashtag" rel="tag">#<span>Lazy</span></a> <a href="https://nrw.social/tags/LazyEvaluation" class="mention hashtag" rel="tag">#<span>LazyEvaluation</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a> <a href="https://nrw.social/tags/Template" class="mention hashtag" rel="tag">#<span>Template</span></a>-Engine</p>
Jens<p>Records für FreshMarker</p><p>Seit Java 14 existieren Records als zusätzliches Klassenkonstrukt im Sprachumfang. Daher wäre es schön, diese kompakte Variante von immutablen Klassen auch in der Template-Engine FreshMarker nutzen zu können. Wie einfach die Unterstützung für Records implementiert werden kann, soll dieser Beitrag veranschaulichen.</p><p><a href="https://schegge.de/2022/11/records-fuer-freshmarker/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">schegge.de/2022/11/records-fue</span><span class="invisible">r-freshmarker/</span></a></p><p><a href="https://nrw.social/tags/Bibliotheken" class="mention hashtag" rel="tag">#<span>Bibliotheken</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/FreeMarker" class="mention hashtag" rel="tag">#<span>FreeMarker</span></a> <a href="https://nrw.social/tags/FreshMarker" class="mention hashtag" rel="tag">#<span>FreshMarker</span></a> <a href="https://nrw.social/tags/Java" class="mention hashtag" rel="tag">#<span>Java</span></a> <a href="https://nrw.social/tags/Java17" class="mention hashtag" rel="tag">#<span>Java17</span></a> <a href="https://nrw.social/tags/Records" class="mention hashtag" rel="tag">#<span>Records</span></a> <a href="https://nrw.social/tags/TemplateEngine" class="mention hashtag" rel="tag">#<span>TemplateEngine</span></a></p>