-
Notifications
You must be signed in to change notification settings - Fork 16
/
faq.html
executable file
·479 lines (432 loc) · 20.2 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
<!DOCTYPE html>
<html lang="en">
<head>
<title>FAQ - Thymeleaf</title>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="icon" href="images/favicon.ico"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:400,400italic,700,700italic"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.3/normalize.min.css" media="screen"/>
<link rel="stylesheet" href="styles/thymeleaf.css" media="screen"/>
<script src="https://unpkg.com/[email protected]/dumb-query-selector.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/prism.min.js" data-manual
defer integrity="sha256-HWJnMZHGx7U1jmNfxe4yaQedmpo/mtxWSIXvcJkLIf4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/plugins/unescaped-markup/prism-unescaped-markup.js"
defer integrity="sha256-THYQfN3ZkC8QQ5I4JxslpEaXIT7tUakaV9/e69MYEuU=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/plugins/normalize-whitespace/prism-normalize-whitespace.min.js"
defer integrity="sha256-abVQckxqXkWO8NiZk8TBPHzv3/LObzIqzzQWz0kV0F0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/plugins/line-numbers/prism-line-numbers.js"
defer integrity="sha256-ISWqAwOAxClmLCu22st3+xU4+kVYHrE8jdn6ONzjg5Q=" crossorigin="anonymous"></script>
<script src="scripts/thymeleaf.js" defer></script>
</head>
<body id="thymeleaf-faq">
<div class="fluid-container toolbar-container">
<nav class="fluid-block toolbar">
<div class="toolbar-menu">
<div class="toolbar-menu-location">FAQ</div>
<button id="site-menu-button" type="button" class="toolbar-menu-button">Site Menu</button>
</div>
<div id="site-menu" class="toolbar-menu-items">
<ul class="toolbar-links">
<li><a href="index.html" class="toolbar-link">Home</a></li>
<li><a href="download.html" class="toolbar-link">Download</a></li>
<li><a href="documentation.html" class="toolbar-link">Docs</a></li>
<li><a href="ecosystem.html" class="toolbar-link">Ecosystem</a></li>
<li class="selected"><a href="faq.html" class="toolbar-link">FAQ</a></li>
</ul>
<ul id="site-nav-links" class="toolbar-links">
<li><a href="https://bsky.app/profile/thymeleaf.org" class="toolbar-link">Bluesky</a></li>
<li><a href="https://github.com/thymeleaf" class="toolbar-link">GitHub</a></li>
</ul>
</div>
</nav>
</div>
<div class="hero-container fluid-container">
<header class="hero-header fluid-block">
<div class="hero-header-text">
<h1 class="hero-header-title">Thymeleaf</h1>
</div>
<div class="hero-header-image">
<img src="images/thymeleaf.png" alt="Thymeleaf logo" class="hero-header-logo"/>
</div>
</header>
</div>
<div class="fluid-container">
<main class="fluid-block">
<section class="description">
<p>About Thymeleaf</p>
<ul>
<li><a href="#where-come-from">Where does Thymeleaf come from? Is it made or backed by any software company?</a>.</li>
<li><a href="#is-it-stable">Is it stable? Can it be considered production-ready?</a></li>
<li><a href="#does-offer-support">Does Thymeleaf offer any type of commercial support?</a></li>
<li><a href="#who-is-using-thymeleaf">Who is using Thymeleaf?</a></li>
<li><a href="#versioning-policy">What is the project's versioning policy?</a></li>
<li><a href="#how-can-i-contribute">How can I contribute to Thymeleaf?</a></li>
<li><a href="#pronunciation">How do you pronounce 'thymeleaf'?</a>.</li>
</ul>
<p>General</p>
<ul>
<li><a href="#is-web-framework">Is Thymeleaf a web framework?</a></li>
<li><a href="#what-types-of-templates">What types of templates can Thymeleaf process?</a></li>
<li><a href="#substitute-jsp">Can Thymeleaf be used as a complete substitute for JSP and JSTL?</a></li>
<li><a href="#compare-other-engines">How does Thymeleaf compare with other template engines like Velocity or FreeMarker?</a></li>
<li><a href="#can-it-non-web">Can it be used outside web applications in non-web environments?</a></li>
<li><a href="#no-spring-can-I-use">I don't use Spring at all. Can I still use Thymeleaf?</a></li>
<li><a href="#use-snapshot">How can I use a SNAPSHOT release of Thymeleaf?</a></li>
<li><a href="#testing">How is thymeleaf tested?</a></li>
</ul>
</section>
<section>
<header>
<h2>About Thymeleaf</h2>
</header>
<section class="subsection">
<header>
<h3>
<a id="where-come-from" href="#where-come-from" class="anchor"></a>
Where does Thymeleaf come from? Is it made or backed by any software company?
</h3>
</header>
<p>Thymeleaf is Open Source Software originally created by a Spanish Software Engineer
called Daniel Fernández and now developed and maintained
by a great <a href="team.html">team of awesome people</a>.</p>
<p>It is neither made nor backed by any software (or any other type of)
company, and it is offered to the public totally free of charge, both in
binary and in source code forms, under the <b>Apache License 2.0</b>.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="is-it-stable" href="#is-it-stable" class="anchor"></a>
Is it stable? Can it be considered production-ready?
</h3>
</header>
<p>Yes, all stable (non-beta) releases can be considered
production-ready.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="does-offer-support" href="#does-offer-support" class="anchor"></a>
Does Thymeleaf offer any type of commercial support?
</h3>
</header>
<p>No, it does not. Official commercial support is not offered at the
moment.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="who-is-using-thymeleaf" href="#who-is-using-thymeleaf" class="anchor"></a>
Who is using Thymeleaf?
</h3>
</header>
<p>Our '<a href="whoisusingthymeleaf.html">Who is using Thymeleaf?</a>'
page contains a list of companies using Thymeleaf in their products,
projects, websites, or even offering it as a part of their
Professional Services portfolio. You will find some download figures
there, too.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="versioning-policy" href="#versioning-policy" class="anchor"></a>
What is the project's versioning policy?
</h3>
</header>
<p>Thymeleaf version numbers have three components: <code>x.y.z</code>
(like: <code>2.0.1</code>).</p>
<ul>
<li>
<code>x</code> is the <b>major version number</b>. A change in
this number means a rewrite of the core or architecture, or an
important amount of changes in the library's APIs which might
break backwards compatibility and/or legacy support.
</li>
<li>
<code>y</code> is the <b>minor version number</b>. A change in
this number means a moderate set of changes has been applied,
offering new features and improvements without changing APIs
significantly and providing <i>deprecation</i> periods for all
changed features in order to allow for a period of adaptation to
the new interfaces.
</li>
<li>
<code>z</code> is the <b>build/bugfix version number</b>. A change
in this number means the fix of some bugs or the addition of a
series of performance or documentation improvements. <i>Bugfix
versions</i> should modify no APIs and be therefore <i>drop-in</i>
replacements for any previous version within the same major+minor
version.
</li>
</ul>
</section>
<section class="subsection">
<header>
<h3>
<a id="how-can-i-contribute" href="#how-can-i-contribute" class="anchor"></a>
How can I contribute to Thymeleaf?
</h3>
</header>
<p>The first and most useful way to contribute to the project is by
helping other users at popular places like
<a href="http://stackoverflow.com/questions/tagged/thymeleaf">StackOverflow</a>.
Building a better community is always priority number
one.</p>
<p>You can also help Thymeleaf by promoting it: write on your blog,
tweet, talk about it at your local JUG, or even simply discuss its
advantages at your company/work and among your colleague developers.
Help spread the word. Do you think your grandma might be interested?
Tell her! :-)</p>
<p>If you are already doing your best at helping users and promoting,
and still you feel that you could do more, there are a couple of
things that are always useful:</p>
<ul>
<li>
Help testing. No amount of testing is enough testing, and your
experience as a user is extremely valuable for building useful
tests that Thymeleaf's developers might never think of. Thymeleaf
has its own <a href="http://github.com/thymeleaf/thymeleaf-testing">testing
library</a> and its own <a href="http://github.com/thymeleaf/thymeleaf-tests">repository
for tests</a>, and there's always room for contributions there. If
you want suggestions about what to test, we can guide you towards
the areas that might better benefit from your help.
</li>
<li>
Help documenting. There's an "Articles" section at the <a href="documentation.html">documentation
page</a> that always welcomes new articles, especially if they
include a nice example application. Your name will be displayed as
author at the article, so that you can add it to your resume ;),
but of course we will ask you for a high level of quality and a
good knowledge of the English language. We keep a list of topic
suggestions <a href="http://github.com/thymeleaf/thymeleaf.github.com/issues">here</a>,
but you can always propose your own to the Team.
</li>
</ul>
<p>What else? Well, of course you can bring your own ideas! You can
create a <a href="http://github.com/thymeleaf/thymeleaf.github.com/issues">GitHub
issue</a> or just send an email directly to the <a href="team.html">Team</a>.
We will be happy to review and discuss your ideas with you. Please
don't just upload a Pull Request with your favourite feature without
previous discussion with the team — Thymeleaf is a complex
project and requires a certain level of organization, and we might not
be able to accept your code even if you put a lot of effort on it (or
even if your idea is good!).</p>
<p>Finally, please note that <b>all artifact contributions to
Thymeleaf (code, documentation...) are regulated by certain
<a href="https://github.com/thymeleaf/thymeleaf-dist/blob/master/CONTRIBUTING.markdown">Terms
and Conditions</a></b>. Before accepting any patches, articles, etc.
from you we will require you to explicitly agree on this terms (an
email or a github comment will do).</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="pronunciation" href="#pronunciation" class="anchor"></a>
How do you pronounce 'thymeleaf'?
</h3>
</header>
<p>In case you are unsure, 'Thymeleaf' is pronounced like this:
<strong>/ˈtaɪmˌlɪːf/</strong></p>
</section>
</section>
<section>
<header>
<h2>General</h2>
</header>
<section class="subsection">
<header>
<h3>
<a id="is-web-framework" href="#is-web-framework" class="anchor"></a>
Is Thymeleaf a web framework?
</h3>
</header>
<p>No, it isn't. It is a template engine.</p>
<p>Template engines play a key role in web frameworks, though, and are
one of its most important components as they are in charge of
producing the user interface or <i>view layer</i> (usually in XHTML or
HTML form).</p>
<p><i>Spring MVC</i>, <i>Struts</i> or <i>Apache Wicket</i> are
examples of web frameworks, whereas <i>JSP</i>, <i>Velocity</i> or
<i>FreeMarker</i> are examples of template engines.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="what-types-of-templates" href="#what-types-of-templates" class="anchor"></a>
What types of templates can Thymeleaf process?
</h3>
</header>
<p>Thymeleaf templates can be:</p>
<ul>
<li>HTML (HTML5, XHTML 1.0/1.1, HTML 4)</li>
<li>XML</li>
<li>TEXT (plain text)</li>
<li>JAVASCRIPT (.js files)</li>
<li>CSS (.css files)</li>
</ul>
</section>
<section class="subsection">
<header>
<h3>
<a id="substitute-jsp" href="#substitute-jsp" class="anchor"></a>
Can Thymeleaf be used as a complete substitute for JSP and JSTL?
</h3>
</header>
<p><b>Absolutely</b>. Not only it can, but we strongly encourage you
to do so. Have a look at our <a href="/doc/articles/thvsjsp.html">Thymeleaf vs.
JSP</a> article if you want to learn how these two technologies
compare.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="compare-other-engines" href="#compare-other-engines" class="anchor"></a>
How does Thymeleaf compare with other template engines like
Velocity or FreeMarker?
</h3>
</header>
<p>Both <i>Velocity</i> and <i>FreeMarker</i> are terrific pieces of
software, but they approach the templating problem with a philosophy
quite different to that of Thymeleaf.</p>
<p>Thymeleaf makes a strong stress on <i>natural templating</i>
—allowing templates to be working prototypes, which the other
two do not allow—, and its syntax tries to be (arguably) cleaner
and more in tune with the current trends in web development. Also,
from an architectural standpoint, both <i>Velocity</i> and <i>FreeMarker</i>
work as sequential text processors whereas Thymeleaf is based on markup parsing
techniques. This allows Thymeleaf to take advantage of interesting features
specific to markup-based environments, especially the web.</p>
<p>Anyway, the best way to compare these technologies is to use them
yourself and feel which one suits you best.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="can-it-non-web" href="#can-it-non-web" class="anchor"></a>
Can it be used outside web applications in non-web environments?
</h3>
</header>
<p>Yes it can. Although Thymeleaf (especially its <i>Standard</i>
dialects) offers many features that are especially useful in web
environments, it can be used for processing non-web HTML or XML documents
(data XML, for example) or other types of templates that are not meant
for being sent via HTTP (for example, text/HTML email content).</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="no-spring-can-I-use" href="#no-spring-can-I-use" class="anchor"></a>
I don't use Spring at all. Can I still use Thymeleaf?
</h3>
</header>
<p>Absolutely. Thymeleaf offers nice integration with Spring MVC
through its <i>SpringStandard</i> dialect (included in the
<code>thymeleaf-spring3</code>, <code>thymeleaf-spring4</code> and <code>thymeleaf-spring5</code>
packages), but Spring integration is completely optional and the
<i>Standard</i> dialect is in fact meant to be used without Spring.</p>
</section>
<section class="subsection">
<header>
<h3>
<a id="use-snapshot" href="#use-snapshot" class="anchor"></a>
How can I use a SNAPSHOT release of Thymeleaf?
</h3>
</header>
<p>From time to time, Thymeleaf will produce a <i>snapshot</i> release
that will allow you to test new or being-developed features. These are
<b>non production ready</b> releases, but will be stable enough for
most testing purposes, and will enable you to try new features before
they are generally available.</p>
<p>In order to use snapshot releases, you need to add the Sonatype OSS
Snapshots repository in your Maven <code>pom.xml</code> file, like
this:</p>
<pre><code class="language-xml"><!--
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
--></code></pre>
<p>Also, you will have to modify your Thymeleaf dependency/ies to use
a <i>snapshot version</i>, which usually consists of the version
number of the <b>next</b> release (not the current one), followed by
<code>-SNAPSHOT</code>. For example, if <code>3.1.3.RELEASE</code> is the
latest published stable release, snapshots will probably appear under
the <code>3.1.4-SNAPSHOT</code> or even
<code>3.2.0-SNAPSHOT</code> version numbers:</p>
<pre><code class="language-xml"><!--
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.1.4-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
--></code></pre>
</section>
<section class="subsection">
<header>
<h3>
<a id="testing" href="#testing" class="anchor"></a>
How is thymeleaf tested?
</h3>
</header>
<p>Thymeleaf has its own testing framework, called <code>thymeleaf-testing</code>.
This testing framework not only allows the Thymeleaf Team to easily
test the library, but also allows users to test the view layer of
their applications. You can explore it at
<a href="http://github.com/thymeleaf/thymeleaf-testing">GitHub</a>.</p>
<p>Making use of this testing framework, Thymeleaf maintains another
GitHub repository completely devoted to tests. Tests, tests, and more
tests. It's the <code>thymeleaf-tests</code> repository that you can
find <a href="http://github.com/thymeleaf/thymeleaf-tests">here</a>.
Want some figures? As of June 2014 the <code>thymeleaf-tests</code>
repository contained more than 1,300 test files, adding up to more
than 37,000 lines of testing code.</p>
<p>Besides, we use <a href="https://travis-ci.org/">Travis CI</a> for
continuous integration, thanks to what every release is published
after being tested in no-Spring, Spring 3.0, Spring 3.1, Spring 3.2
and Spring 4.0 environments, with Java 6, 7 and 8 (unfortunately
Travis does not support Java 5, so we test that manually).</p>
</section>
</section>
</main>
</div>
<div class="fluid-container footer-container">
<footer class="footer fluid-block">
<div class="footer-sections">
<h5>On this site</h5>
<ul class="footer-sections-links">
<li><a href="index.html">Home</a></li>
<li><a href="download.html">Download</a></li>
<li><a href="documentation.html">Docs</a></li>
<li><a href="ecosystem.html">Ecosystem</a></li>
<li><a href="faq.html">FAQ</a></li>
<li id="footer-issue-tracking"><a href="issuetracking.html">Issue Tracking</a></li>
<li><a href="team.html">The Thymeleaf Team</a></li>
<li><a href="whoisusingthymeleaf.html">Who's using Thymeleaf?</a></li>
</ul>
</div>
<div>
<h5>External links</h5>
<ul class="footer-sections-links">
<li><a href="https://bsky.app/profile/thymeleaf.org">Follow us on Bluesky</a></li>
<li><a href="https://github.com/thymeleaf">Fork us on GitHub</a></li>
</ul>
</div>
</footer>
<div class="copyright fluid-block">Copyright © Thymeleaf</div>
<div class="license fluid-block">
Thymeleaf is <strong>open source</strong> software distributed under the
<a href="https://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a><br/>
This website (excluding the names and logos of Thymeleaf users) is licensed under the <a href="http://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0 License</a>
</div>
</div>
</body>
</html>