This is an automated email from the ASF dual-hosted git repository.
asf-ci-deploy pushed a commit to branch asf-site-production
in repository https://gitbox.apache.org/repos/asf/grails-website.git
The following commit(s) were added to refs/heads/asf-site-production by this
push:
new a07565e5289 Deploying to documentation branch - 17:04:27
a07565e5289 is described below
commit a07565e52891c4fa96991cc67e3e2ea753ec3cb0
Author: jdaugherty <[email protected]>
AuthorDate: Thu Aug 13 17:04:30 2026 +0000
Deploying to documentation branch - 17:04:27
---
.../grails-data/developer-manual/gettingStarted.html | 2 +-
.../grails-data/developer-manual/introduction.html | 2 +-
docs/snapshot/grails-data/developer-manual/stepByStep.html | 2 +-
docs/snapshot/grails-data/developer-manual/testing.html | 2 +-
.../grails-data/developer-manual/understandingApi.html | 2 +-
.../developer-manual/understandingApi/datastoreBasics.html | 2 +-
.../developer-manual/understandingApi/gormApis.html | 2 +-
.../developer-manual/understandingApi/gormEnhancer.html | 2 +-
.../understandingApi/implementingCrud.html | 2 +-
.../understandingApi/implementingQueries.html | 2 +-
.../understandingApi/secondaryIndexes.html | 2 +-
docs/snapshot/grails-data/whats-new-manual/index.html | 2 +-
docs/snapshot/guide/single.html | 14 ++++++++++++++
docs/snapshot/guide/theWebLayer.html | 14 ++++++++++++++
14 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/docs/snapshot/grails-data/developer-manual/gettingStarted.html
b/docs/snapshot/grails-data/developer-manual/gettingStarted.html
index 7da925c52fc..2f0607b211c 100644
--- a/docs/snapshot/grails-data/developer-manual/gettingStarted.html
+++ b/docs/snapshot/grails-data/developer-manual/gettingStarted.html
@@ -523,7 +523,7 @@ cd grails-core</pre>
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/introduction.html
b/docs/snapshot/grails-data/developer-manual/introduction.html
index 2a9e1f93aa2..8ad77623f0d 100644
--- a/docs/snapshot/grails-data/developer-manual/introduction.html
+++ b/docs/snapshot/grails-data/developer-manual/introduction.html
@@ -476,7 +476,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/stepByStep.html
b/docs/snapshot/grails-data/developer-manual/stepByStep.html
index cc07188b1d8..be17352258c 100644
--- a/docs/snapshot/grails-data/developer-manual/stepByStep.html
+++ b/docs/snapshot/grails-data/developer-manual/stepByStep.html
@@ -621,7 +621,7 @@ class XyzTestSuite {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/testing.html
b/docs/snapshot/grails-data/developer-manual/testing.html
index 1b1722150a0..db59a3be93b 100644
--- a/docs/snapshot/grails-data/developer-manual/testing.html
+++ b/docs/snapshot/grails-data/developer-manual/testing.html
@@ -511,7 +511,7 @@ class PagedResultSpec extends GormDatastoreSpec{
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/understandingApi.html
b/docs/snapshot/grails-data/developer-manual/understandingApi.html
index ba162e64bc4..85c841344df 100644
--- a/docs/snapshot/grails-data/developer-manual/understandingApi.html
+++ b/docs/snapshot/grails-data/developer-manual/understandingApi.html
@@ -454,7 +454,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
index 52b5ee58904..427bdb047f9 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
@@ -561,7 +561,7 @@ protected Session createSession(PropertyResolver
connDetails) {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
index c266cf79d9a..c258a0bc7ff 100644
--- a/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
+++ b/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
@@ -496,7 +496,7 @@ class Neo4jEntityTraitProvider implements
GormEntityTraitProvider {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
index f218648387a..261ad995392 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
@@ -488,7 +488,7 @@ enhancer.enhance()</code></pre>
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
index d8543fbaa14..3c4feeae34a 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
@@ -673,7 +673,7 @@ protected void deleteEntry(String family, final Object key,
final Object entry)
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
index b2e155b5bab..2dd28ca274d 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
@@ -588,7 +588,7 @@ If, for instance, the underlying datastore does not support
the calculation of a
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
index 91ddd503512..84079fbe8a4 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
@@ -526,7 +526,7 @@ If the underlying datastore supports secondary indexes then
it is ok to just ret
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/whats-new-manual/index.html
b/docs/snapshot/grails-data/whats-new-manual/index.html
index d3c1be7a993..7b181c93f16 100644
--- a/docs/snapshot/grails-data/whats-new-manual/index.html
+++ b/docs/snapshot/grails-data/whats-new-manual/index.html
@@ -527,7 +527,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-11 20:55:42 UTC
+Last updated 2026-08-13 16:41:58 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/guide/single.html b/docs/snapshot/guide/single.html
index 0ed5b120b40..5ef3638d8e8 100644
--- a/docs/snapshot/guide/single.html
+++ b/docs/snapshot/guide/single.html
@@ -20192,6 +20192,20 @@ your.custom.ComponentB;"
<div class="paragraph">
<p>However, unlike JSP EL you can have any Groovy expression within the
<code>${..}</code> block.</p>
</div>
+<div class="paragraph">
+<p>A backslash immediately before an expression escapes it: the expression is
not evaluated, and the page renders a literal <code>${..}</code> without the
backslash. This matters most for JavaScript template literals, whose
interpolation placeholders share the <code>${..}</code> syntax and would
otherwise be evaluated on the server:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span
class="tag"><script></span>
+<span class="inline"> const name = <span class="string"><span
class="delimiter">'</span><span class="content">Grails</span><span
class="delimiter">'</span></span>;
+ console.log(<span class="error">`</span>Hello <span
class="error">\</span><span class="predefined">$</span>{name}<span
class="error">`</span>);</span>
+<span class="tag"></script></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The browser receives the template literal with its <code>${name}</code>
placeholder intact, to be interpolated by JavaScript. Only the backslash
performing the escape is removed, and each expression must be escaped
individually. Expressions in the attributes of GSP tags cannot be escaped this
way.</p>
+</div>
<div class="admonitionblock warning">
<table>
<tr>
diff --git a/docs/snapshot/guide/theWebLayer.html
b/docs/snapshot/guide/theWebLayer.html
index 3d627d4d27a..1dae5cb4d5d 100644
--- a/docs/snapshot/guide/theWebLayer.html
+++ b/docs/snapshot/guide/theWebLayer.html
@@ -3788,6 +3788,20 @@ your.custom.ComponentB;"
<div class="paragraph">
<p>However, unlike JSP EL you can have any Groovy expression within the
<code>${..}</code> block.</p>
</div>
+<div class="paragraph">
+<p>A backslash immediately before an expression escapes it: the expression is
not evaluated, and the page renders a literal <code>${..}</code> without the
backslash. This matters most for JavaScript template literals, whose
interpolation placeholders share the <code>${..}</code> syntax and would
otherwise be evaluated on the server:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span
class="tag"><script></span>
+<span class="inline"> const name = <span class="string"><span
class="delimiter">'</span><span class="content">Grails</span><span
class="delimiter">'</span></span>;
+ console.log(<span class="error">`</span>Hello <span
class="error">\</span><span class="predefined">$</span>{name}<span
class="error">`</span>);</span>
+<span class="tag"></script></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The browser receives the template literal with its <code>${name}</code>
placeholder intact, to be interpolated by JavaScript. Only the backslash
performing the escape is removed, and each expression must be escaped
individually. Expressions in the attributes of GSP tags cannot be escaped this
way.</p>
+</div>
<div class="admonitionblock warning">
<table>
<tr>