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 9638f559995 Deploying to documentation branch - 16:34:51
9638f559995 is described below

commit 9638f5599955340ebc46773dd2b7dc89e25a3123
Author: matrei <[email protected]>
AuthorDate: Mon Jun 15 16:34:53 2026 +0000

    Deploying to documentation branch - 16:34:51
---
 docs/snapshot/api/index-all.html                   |  2 +
 .../testing/http/client/HttpClientSupport.html     | 71 +++++++++++++---------
 .../developer-manual/gettingStarted.html           |  2 +-
 .../grails-data/developer-manual/introduction.html |  2 +-
 .../grails-data/developer-manual/stepByStep.html   |  2 +-
 .../grails-data/developer-manual/testing.html      |  2 +-
 .../developer-manual/understandingApi.html         |  2 +-
 .../understandingApi/datastoreBasics.html          |  2 +-
 .../understandingApi/gormApis.html                 |  2 +-
 .../understandingApi/gormEnhancer.html             |  2 +-
 .../understandingApi/implementingCrud.html         |  2 +-
 .../understandingApi/implementingQueries.html      |  2 +-
 .../understandingApi/secondaryIndexes.html         |  2 +-
 .../grails-data/whats-new-manual/index.html        |  2 +-
 docs/snapshot/guide/introduction.html              |  8 +++
 docs/snapshot/guide/single.html                    | 28 ++++++++-
 docs/snapshot/guide/testing.html                   | 18 ++++++
 docs/snapshot/index.html                           |  2 +-
 18 files changed, 111 insertions(+), 42 deletions(-)

diff --git a/docs/snapshot/api/index-all.html b/docs/snapshot/api/index-all.html
index 798eff08379..859e03f68d0 100644
--- a/docs/snapshot/api/index-all.html
+++ b/docs/snapshot/api/index-all.html
@@ -26042,6 +26042,8 @@ if (location.href.indexOf('is-external=true') == -1) {
 </dt><dd> <div class="block">PATCH XML generated by the provided 
groovy.xml.MarkupBuilder DSL closure.</div></dd>
 <dt><span class="strong"><a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html#httpPost(Map<String,
 String>, java.lang.CharSequence, java.lang.CharSequence, 
java.lang.CharSequence, java.net.http.HttpClient)" title="Method in 
HttpClientSupport">httpPost(Map&lt;String, String&gt;, java.lang.CharSequence, 
java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)</a></span> - Method in <a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html">Http [...]
 </dt><dd> <div class="block">POST request.</div></dd>
+<dt><span class="strong"><a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html#httpPostForm(Map<String,
 String>, java.lang.CharSequence, Map<String, ?>, java.net.http.HttpClient)" 
title="Method in HttpClientSupport">httpPostForm(Map&lt;String, String&gt;, 
java.lang.CharSequence, Map&lt;String, ?&gt;, 
java.net.http.HttpClient)</a></span> - Method in <a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html">HttpClientSupport</a>
+</dt><dd> <div class="block">POST form data as 
<CODE>application/x-www-form-urlencoded</CODE> (UTF-8).</div></dd>
 <dt><span class="strong"><a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html#httpPostJson(Map<String,
 String>, java.lang.CharSequence, groovy.json.JsonGenerator, Map<String, 
Object>, java.net.http.HttpClient)" title="Method in 
HttpClientSupport">httpPostJson(Map&lt;String, String&gt;, 
java.lang.CharSequence, groovy.json.JsonGenerator, Map&lt;String, Object&gt;, 
java.net.http.HttpClient)</a></span> - Method in <a 
href="org/apache/grails/testing/http/client/HttpClientSupp [...]
 </dt><dd> <div class="block">POST JSON payload from java.util.Map.</div></dd>
 <dt><span class="strong"><a 
href="org/apache/grails/testing/http/client/HttpClientSupport.html#httpPostMultipart(Map<String,
 String>, java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, java.net.http.HttpClient)" 
title="Method in HttpClientSupport">httpPostMultipart(Map&lt;String, 
String&gt;, java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, 
java.net.http.HttpClient)</a></span> - Method in <a 
href="org/apache/grails/testing/http/client/ [...]
diff --git 
a/docs/snapshot/api/org/apache/grails/testing/http/client/HttpClientSupport.html
 
b/docs/snapshot/api/org/apache/grails/testing/http/client/HttpClientSupport.html
index 73457fdeddd..1e58f0a77e1 100644
--- 
a/docs/snapshot/api/org/apache/grails/testing/http/client/HttpClientSupport.html
+++ 
b/docs/snapshot/api/org/apache/grails/testing/http/client/HttpClientSupport.html
@@ -385,172 +385,178 @@ extends java.lang.Object</pre>
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>POST 
JSON string payload.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostForm(Map, java.lang.CharSequence, Map, 
java.net.http.HttpClient)">httpPostForm</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.util.Map&lt;java.lang.String, ?&gt; formData, java.net.http.HttpClient 
client)</code><br>POST form data as 
<CODE>application/x-www-form-urlencoded</CODE> (UTF-8).</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostJson(java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPostJson</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>POST JSON payload from java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>POST 
JSON string payload.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostJson(java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br>POST JSON payload from 
java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostJson(java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPostJson</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>POST JSON payload from java.util.Map.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>POST JSON payload from java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostJson(java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br>POST JSON payload from 
java.util.Map.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code>< [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>POST JSON payload from java.util.Map.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostMultipart(java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, 
java.net.http.HttpClient)">httpPostMultipart</a></strong>(java.lang.CharSequence
 pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/MultipartBody.html'>MultipartBody</a>
 body, java.net.http.HttpClient client)</code><br>POST multipart payload.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map, 
java.net.http.HttpClient)">httpPostJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code>< [...]
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostMultipart(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, 
java.net.http.HttpClient)">httpPostMultipart</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/MultipartBody.html'>MultipartBody</a>
 body, java.net.http.HttpClient client)</code><br>POST multip [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPostMultipart(java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, 
java.net.http.HttpClient)">httpPostMultipart</a></strong>(java.lang.CharSequence
 pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/MultipartBody.html'>MultipartBody</a>
 body, java.net.http.HttpClient client)</code><br>POST multipart payload.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>POST 
XML string payload.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostMultipart(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.MultipartBody, 
java.net.http.HttpClient)">httpPostMultipart</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/MultipartBody.html'>MultipartBody</a>
 body, java.net.http.HttpClient client)</code><br>POST multip [...]
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPostXml</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>POST XML generated by the 
provided groovy.xml.MarkupBuilder DSL closure.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>POST 
XML string payload.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http.HttpClient 
client)</code><br>POST XML generated by the provided gro [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPostXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPostXml</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>POST XML generated by the 
provided groovy.xml.MarkupBuilder DSL closure.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>POST XML generated by the 
p [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPostXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http.HttpClient 
client)</code><br>POST XML generated by the provided gro [...]
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.ht [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>POST XML generated by the 
p [...]
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPut(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.lang.CharSequence, 
java.net.http.HttpClient)">httpPut</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.lang.CharSequence contentType, 
java.net.http.HttpClient client)</code><br>PUT request.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPostXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPostXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.ht [...]
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>PUT 
JSON string payload.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPut(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.lang.CharSequence, 
java.net.http.HttpClient)">httpPut</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.lang.CharSequence contentType, 
java.net.http.HttpClient client)</code><br>PUT request.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutJson(java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPutJson</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>PUT JSON payload from java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, java.lang.CharSequence, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.lang.CharSequence body, java.net.http.HttpClient client)</code><br>PUT 
JSON string payload.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutJson(java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br>PUT JSON payload from 
java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPutJson(java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPutJson</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>PUT JSON payload from java.util.Map.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>PUT JSON payload from java.util.Map.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPutJson(java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br>PUT JSON payload from 
java.util.Map.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, 
Map)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; 
body)</code><br>PUT JSON payload from java.util.Map.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPutXml</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>PUT XML generated by the 
provided groovy.xml.MarkupBuilder DSL closure.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPutJson(Map, java.lang.CharSequence, groovy.json.JsonGenerator, Map, 
java.net.http.HttpClient)">httpPutJson</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../groovy.json.JsonGenerator.html'>JsonGenerator</a> 
jsonGenerator, java.util.Map&lt;java.lang.String, java.lang.Object&gt; body, 
java.net.http.HttpClient client)</code><br [...]
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPutXml</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http.HttpClient 
client)</code><br>PUT XML generated by the provided groovy [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPutXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPutXml</a></strong>(java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>PUT XML generated by the 
provided groovy.xml.MarkupBuilder DSL closure.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPutXml</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>PUT XML generated by the 
prov [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPutXml(java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPutXml</a></strong>(java.lang.CharSequence 
pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http.HttpClient 
client)</code><br>PUT XML generated by the provided groovy [...]
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpPutXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPutXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http [...]
+                            <td class="colLast"><code><strong><a 
href="#httpPutXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, 
Closure)">httpPutXml</a></strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body)</code><br>PUT XML generated by the 
prov [...]
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpTrace(java.lang.CharSequence)">httpTrace</a></strong>(java.lang.CharSequence
 pathOrUrl)</code><br>TRACE request.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpPutXml(Map, java.lang.CharSequence, 
org.apache.grails.testing.http.client.utils.XmlUtils.Format, Closure, 
java.net.http.HttpClient)">httpPutXml</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, <a 
href='../../../../../../org/apache/grails/testing/http/client/utils/XmlUtils.Format.html'>Format</a>
 format, groovy.lang.Closure&lt;?&gt; body, java.net.http [...]
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpTrace(java.lang.CharSequence, 
java.net.http.HttpClient)">httpTrace</a></strong>(java.lang.CharSequence 
pathOrUrl, java.net.http.HttpClient client)</code><br>TRACE request.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpTrace(java.lang.CharSequence)">httpTrace</a></strong>(java.lang.CharSequence
 pathOrUrl)</code><br>TRACE request.</td>
                         </tr>
                         
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpTrace(Map, 
java.lang.CharSequence)">httpTrace</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence 
pathOrUrl)</code><br>TRACE request.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpTrace(java.lang.CharSequence, 
java.net.http.HttpClient)">httpTrace</a></strong>(java.lang.CharSequence 
pathOrUrl, java.net.http.HttpClient client)</code><br>TRACE request.</td>
                         </tr>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#httpTrace(Map, java.lang.CharSequence, 
java.net.http.HttpClient)">httpTrace</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.net.http.HttpClient client)</code><br>TRACE request.</td>
+                            <td class="colLast"><code><strong><a 
href="#httpTrace(Map, 
java.lang.CharSequence)">httpTrace</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence 
pathOrUrl)</code><br>TRACE request.</td>
                         </tr>
                         
                         <tr class="rowColor">
+                            <td class="colFirst"><code></code></td>
+                            <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
+                            <td class="colLast"><code><strong><a 
href="#httpTrace(Map, java.lang.CharSequence, 
java.net.http.HttpClient)">httpTrace</a></strong>(java.util.Map&lt;java.lang.String,
 java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.net.http.HttpClient client)</code><br>TRACE request.</td>
+                        </tr>
+                        
+                        <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td 
class="colLast"><code>java.net.http.HttpClient</code></td>
                             <td class="colLast"><code><strong><a 
href="#newHttpClientWith(Closure)">newHttpClientWith</a></strong>(groovy.lang.Closure&lt;?&gt;
 configurer)</code><br>Creates an java.net.http.HttpClient with default 
configuration and optional customizations.</td>
                         </tr>
                         
-                        <tr class="altColor">
+                        <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td 
class="colLast"><code>java.net.http.HttpRequest</code></td>
                             <td class="colLast"><code><strong><a 
href="#newHttpRequestWith(java.lang.CharSequence, 
Closure)">newHttpRequestWith</a></strong>(java.lang.CharSequence pathOrUrl, 
groovy.lang.Closure&lt;?&gt; configurer)</code><br>Creates an 
java.net.http.HttpRequest with default configuration and optional 
customizations.</td>
                         </tr>
                         
-                        <tr class="rowColor">
+                        <tr class="altColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a></code></td>
                             <td class="colLast"><code><strong><a 
href="#sendHttpRequest(java.net.http.HttpRequest, 
java.net.http.HttpClient)">sendHttpRequest</a></strong>(java.net.http.HttpRequest
 request, java.net.http.HttpClient client)</code><br>Sends a pre-built 
request.</td>
@@ -864,6 +870,15 @@ extends java.lang.Object</pre>
                             </li>
                         </ul>
                     
+                        <a name="httpPostForm(Map, java.lang.CharSequence, 
Map, java.net.http.HttpClient)"><!-- --></a>
+                        <ul class="blockListLast">
+                            <li class="blockList">
+                                <h4><a 
href='../../../../../../org/apache/grails/testing/http/client/TestHttpResponse.html'>TestHttpResponse</a>
 <strong>httpPostForm</strong>(java.util.Map&lt;java.lang.String, 
java.lang.String&gt; headers, java.lang.CharSequence pathOrUrl, 
java.util.Map&lt;java.lang.String, ?&gt; formData, java.net.http.HttpClient 
client)</h4>
+                                <p> POST form data as 
<CODE>application/x-www-form-urlencoded</CODE> (UTF-8). 
<DL><DT><B>Parameters:</B></DT><DD><code>headers</code> -  optional request 
headers</DD><DD><code>pathOrUrl</code> -  relative path or absolute 
URL</DD><DD><code>formData</code> -  form fields to encode into the request 
body; collection and array values are encoded as
+ repeated keys</DD><DD><code>client</code> -  optional 
java.net.http.HttpClient instance to 
use</DD></DL><DL><DT><B>Returns:</B></DT><DD>response with String 
body</DD></DL></p>
+                            </li>
+                        </ul>
+                    
                         <a name="httpPostJson(Map, java.lang.CharSequence, 
java.lang.CharSequence, java.net.http.HttpClient)"><!-- --></a>
                         <ul class="blockListLast">
                             <li class="blockList">
diff --git a/docs/snapshot/grails-data/developer-manual/gettingStarted.html 
b/docs/snapshot/grails-data/developer-manual/gettingStarted.html
index f56ed5ebfad..df73b0ac917 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 0b401fbab12..6f621eb85ab 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 2411c77addb..fa9042098cd 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 72bf82938a2..79d988242c7 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 23ce9b894c7..2b7b4f4aa5a 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 4cc98e3ccd7..cbf3ebefc0d 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 94f1bdbbdf0..571c61ba14c 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 69d4e5239e9..82190e63913 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 6cb693ea112..74a7ba49f8e 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 130bd4c1215..feb82b92d3b 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 1a4eeded4e9..a7568dbb534 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 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 fb43fea4f4a..a5733dcc3bf 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-06-11 22:54:25 UTC
+Last updated 2026-06-14 11:51:31 UTC
 </div>
 </div>
 </body>
diff --git a/docs/snapshot/guide/introduction.html 
b/docs/snapshot/guide/introduction.html
index 26030143955..3c344d75d13 100644
--- a/docs/snapshot/guide/introduction.html
+++ b/docs/snapshot/guide/introduction.html
@@ -320,6 +320,14 @@ Method-defined tags now bind named attributes more 
predictably, exclude inherite
 Tests that use <code>TagLibUnitTest</code> no longer need to manage 
<code>purgeTagLibMetaClass</code>, and specs that mock additional tag libraries 
continue to work across feature methods.</p>
 </div>
 </div>
+<div class="sect3">
+<h4 id="_test_http_client_form_requests">Test HTTP Client Form Requests</h4>
+<div class="paragraph">
+<p>Integration tests that implement <code>HttpClientSupport</code> can now use 
<code>httpPostForm(&#8230;&#8203;)</code> to send 
<code>application/x-www-form-urlencoded</code>
+request bodies. The helper URL-encodes form fields using UTF-8, and repeated 
values in a <code>Collection</code> or array are encoded as
+repeated keys in insertion order.</p>
+</div>
+</div>
 </div>
 
 
diff --git a/docs/snapshot/guide/single.html b/docs/snapshot/guide/single.html
index 3381bb2a3ac..d05bf0d9410 100644
--- a/docs/snapshot/guide/single.html
+++ b/docs/snapshot/guide/single.html
@@ -138,7 +138,7 @@ Companies deploy assistants like this [](https://kapa.ai) 
on docs via [website w
                         <div class="project">
                             <h1>The Grails Framework</h1>
                             <p><strong>Authors:</strong> The Apache Grails 
Team</p>
-                            <p><strong>Version:</strong>&nbsp;<span 
style='display:inline-block;'><select 
onChange='window.document.location.href=this.options[this.selectedIndex].value;'><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/guide/single.html'>SNAPSHOT</option><option
 
value='https://grails.apache.org/docs/8.0.0-M1/guide/single.html'>8.0.0-M1</option><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/guide/single.html'>8.0.0-SNA 
[...]
+                            <p><strong>Version:</strong>&nbsp;<span 
style='display:inline-block;'><select 
onChange='window.document.location.href=this.options[this.selectedIndex].value;'><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/guide/single.html'>SNAPSHOT</option><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/guide/single.html'>8.0.0-SNAPSHOT</option></select></span></p>
                             
                         </div>
 
@@ -883,6 +883,14 @@ Method-defined tags now bind named attributes more 
predictably, exclude inherite
 Tests that use <code>TagLibUnitTest</code> no longer need to manage 
<code>purgeTagLibMetaClass</code>, and specs that mock additional tag libraries 
continue to work across feature methods.</p>
 </div>
 </div>
+<div class="sect3">
+<h4 id="_test_http_client_form_requests">Test HTTP Client Form Requests</h4>
+<div class="paragraph">
+<p>Integration tests that implement <code>HttpClientSupport</code> can now use 
<code>httpPostForm(&#8230;&#8203;)</code> to send 
<code>application/x-www-form-urlencoded</code>
+request bodies. The helper URL-encodes form fields using UTF-8, and repeated 
values in a <code>Collection</code> or array are encoded as
+repeated keys in insertion order.</p>
+</div>
+</div>
 </div>
 
 
@@ -33067,6 +33075,14 @@ request building and response assertions:</p>
         response.assertJsonContains([<span class="key">title</span>: <span 
class="string"><span class="delimiter">'</span><span class="content">Grails in 
Action</span><span class="delimiter">'</span></span>])
     }
 
+    <span class="type">void</span> <span class="string"><span 
class="delimiter">'</span><span class="content">Posting form data</span><span 
class="delimiter">'</span></span>() {
+        <span class="key">when</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">you post a map it is turned 
into an application/x-www-form-urlencoded payload</span><span 
class="delimiter">'</span></span>
+        <span class="keyword">def</span> response = httpPostForm(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/api/search</span><span class="delimiter">'</span></span>, 
[<span class="key">query</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">grails core</span><span 
class="delimiter">'</span></span>, <span class="key">tag</span>: [<span 
class="string"><span class="delimiter">'</span><span 
class="content">web</span><span clas [...]
+
+        <span class="key">then</span>:
+        response.assertStatus(<span class="integer">200</span>)
+    }
+
     <span class="type">void</span> <span class="string"><span 
class="delimiter">'</span><span class="content">Posting and verifying 
XML</span><span class="delimiter">'</span></span>() {
         <span class="key">when</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">you can post XML using a 
builder</span><span class="delimiter">'</span></span>
         <span class="keyword">def</span> response = httpPostXml(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/api/books</span><span class="delimiter">'</span></span>) {
@@ -33123,6 +33139,16 @@ request building and response assertions:</p>
 and <code>newHttpClientWith(Closure configurer)</code> to customize your own 
client and requests starting from the defaults.</p>
 </div>
 <div class="paragraph">
+<p><code>httpPostForm(&#8230;&#8203;)</code> sends 
<code>application/x-www-form-urlencoded</code> request bodies. Pass a 
<code>Map</code> of form fields, and the
+helper will URL-encode each entry using UTF-8. Scalar values are encoded once, 
while <code>Collection</code> and array values are
+encoded as repeated keys in insertion order:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">httpPostForm(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/search</span><span class="delimiter">'</span></span>, [<span 
class="key">query</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">grails core</span><span 
class="delimiter">'</span></span>, <span class="key">tag</span>: [<span 
class="string"><span class="delimiter">'</span><span 
class="content">web</span><span clas [...]
+</div>
+</div>
+<div class="paragraph">
 <p>Additional request helper methods available include 
<code>httpDelete()</code>, <code>httpHead()</code>, <code>httpOptions()</code>, 
<code>httpPatch()</code>,
 <code>httpPut()</code>, <code>httpTrace()</code>, and many assertion methods 
on responses.</p>
 </div>
diff --git a/docs/snapshot/guide/testing.html b/docs/snapshot/guide/testing.html
index 25a4aa4de5a..a191977e991 100644
--- a/docs/snapshot/guide/testing.html
+++ b/docs/snapshot/guide/testing.html
@@ -2701,6 +2701,14 @@ request building and response assertions:</p>
         response.assertJsonContains([<span class="key">title</span>: <span 
class="string"><span class="delimiter">'</span><span class="content">Grails in 
Action</span><span class="delimiter">'</span></span>])
     }
 
+    <span class="type">void</span> <span class="string"><span 
class="delimiter">'</span><span class="content">Posting form data</span><span 
class="delimiter">'</span></span>() {
+        <span class="key">when</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">you post a map it is turned 
into an application/x-www-form-urlencoded payload</span><span 
class="delimiter">'</span></span>
+        <span class="keyword">def</span> response = httpPostForm(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/api/search</span><span class="delimiter">'</span></span>, 
[<span class="key">query</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">grails core</span><span 
class="delimiter">'</span></span>, <span class="key">tag</span>: [<span 
class="string"><span class="delimiter">'</span><span 
class="content">web</span><span clas [...]
+
+        <span class="key">then</span>:
+        response.assertStatus(<span class="integer">200</span>)
+    }
+
     <span class="type">void</span> <span class="string"><span 
class="delimiter">'</span><span class="content">Posting and verifying 
XML</span><span class="delimiter">'</span></span>() {
         <span class="key">when</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">you can post XML using a 
builder</span><span class="delimiter">'</span></span>
         <span class="keyword">def</span> response = httpPostXml(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/api/books</span><span class="delimiter">'</span></span>) {
@@ -2757,6 +2765,16 @@ request building and response assertions:</p>
 and <code>newHttpClientWith(Closure configurer)</code> to customize your own 
client and requests starting from the defaults.</p>
 </div>
 <div class="paragraph">
+<p><code>httpPostForm(&#8230;&#8203;)</code> sends 
<code>application/x-www-form-urlencoded</code> request bodies. Pass a 
<code>Map</code> of form fields, and the
+helper will URL-encode each entry using UTF-8. Scalar values are encoded once, 
while <code>Collection</code> and array values are
+encoded as repeated keys in insertion order:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">httpPostForm(<span 
class="string"><span class="delimiter">'</span><span 
class="content">/search</span><span class="delimiter">'</span></span>, [<span 
class="key">query</span>: <span class="string"><span 
class="delimiter">'</span><span class="content">grails core</span><span 
class="delimiter">'</span></span>, <span class="key">tag</span>: [<span 
class="string"><span class="delimiter">'</span><span 
class="content">web</span><span clas [...]
+</div>
+</div>
+<div class="paragraph">
 <p>Additional request helper methods available include 
<code>httpDelete()</code>, <code>httpHead()</code>, <code>httpOptions()</code>, 
<code>httpPatch()</code>,
 <code>httpPut()</code>, <code>httpTrace()</code>, and many assertion methods 
on responses.</p>
 </div>
diff --git a/docs/snapshot/index.html b/docs/snapshot/index.html
index 753828babb2..45de278b3d1 100644
--- a/docs/snapshot/index.html
+++ b/docs/snapshot/index.html
@@ -138,7 +138,7 @@ Companies deploy assistants like this [](https://kapa.ai) 
on docs via [website w
                         <div class="project">
                             <h1>The Grails Framework</h1>
                             <p><strong>Authors:</strong> The Apache Grails 
Team</p>
-                            <p><strong>Version:</strong>&nbsp;<span 
style='display:inline-block;'><select 
onChange='window.document.location.href=this.options[this.selectedIndex].value;'><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/index.html'>SNAPSHOT</option><option
 
value='https://grails.apache.org/docs/8.0.0-M1/index.html'>8.0.0-M1</option><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/index.html'>8.0.0-SNAPSHOT</option><option
 [...]
+                            <p><strong>Version:</strong>&nbsp;<span 
style='display:inline-block;'><select 
onChange='window.document.location.href=this.options[this.selectedIndex].value;'><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/index.html'>SNAPSHOT</option><option
 selected='selected' 
value='https://grails.apache.org/docs/snapshot/index.html'>8.0.0-SNAPSHOT</option></select></span></p>
                             
                         </div>
 

Reply via email to