This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/struts-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new cb2e4f902 Updates stage by Jenkins
cb2e4f902 is described below

commit cb2e4f9024e24c9c8b717bef09204338689a6aa0
Author: jenkins <[email protected]>
AuthorDate: Fri Oct 17 10:27:16 2025 +0000

    Updates stage by Jenkins
---
 content/core-developers/action-configuration.html  |  4 +
 content/core-developers/chaining-interceptor.html  |  4 +-
 content/core-developers/localization.html          | 16 ++--
 content/core-developers/logging.html               |  2 +-
 .../core-developers/ognl-cache-configuration.html  |  2 +-
 content/core-developers/validation.html            | 86 +++++++++++++++++++++-
 .../getting-started/form-validation-using-xml.html |  4 +
 content/security/index.html                        |  4 +-
 8 files changed, 104 insertions(+), 18 deletions(-)

diff --git a/content/core-developers/action-configuration.html 
b/content/core-developers/action-configuration.html
index 83d4d30bd..615b9d7da 100644
--- a/content/core-developers/action-configuration.html
+++ b/content/core-developers/action-configuration.html
@@ -229,6 +229,10 @@ to specifically allow slashes in your action names via a 
constant in the <code c
 <p>See <a href="https://issues.apache.org/jira/browse/WW-1383";>JIRA Issue 
WW-1383</a> for discussion as there are side effects 
 to setting this property to <code class="language-plaintext 
highlighter-rouge">true</code>.</p>
 
+<blockquote>
+  <p><strong>Note:</strong> When using slashes in action names, validation 
file naming requires special attention. Slashes in action aliases are replaced 
with hyphens in validation file names. See <a 
href="validation#validation-files-for-actions-with-slashes">Validation Files 
for Actions with Slashes</a> for detailed information.</p>
+</blockquote>
+
 <p><strong>Action Names with Dots and Dashes</strong></p>
 
 <p>Although action naming is pretty flexible, one should pay attention when 
using dots (eg. create.user) and/or dashes 
diff --git a/content/core-developers/chaining-interceptor.html 
b/content/core-developers/chaining-interceptor.html
index d2146cb7d..a80ff5b8d 100644
--- a/content/core-developers/chaining-interceptor.html
+++ b/content/core-developers/chaining-interceptor.html
@@ -156,10 +156,10 @@
 <h2 id="description">Description</h2>
 
 <p>An interceptor that copies all the properties of every object in the value 
stack to the currently executing object,
-except for any object that implements <a 
href="/maven/struts2-core/apidocs/com/opensymphony/xwork2/Unchainable">Unchainable</a>.
 
+except for any object that implements <a 
href="/maven/struts2-core/apidocs/org/apache/struts2/Unchainable">Unchainable</a>.
 
 A collection of optional <code class="language-plaintext 
highlighter-rouge">includes</code> and <code class="language-plaintext 
highlighter-rouge">excludes</code> may be provided to control how and which 
parameters are copied. 
 Only <code class="language-plaintext highlighter-rouge">includes</code> or 
<code class="language-plaintext highlighter-rouge">excludes</code> may be 
specified. Specifying both results in undefined behavior. See the JavaDocs 
-for <a 
href="/maven/struts2-core/apidocs/com/opensymphony/xwork2/util/reflection/ReflectionProvider.html#copy(java.lang.Object,
 java.lang.Object, java.util.Map, java.util.Collection, 
java.util.Collection)">ReflectionProvider#copy(Object, Object, java.util.Map, 
java.util.Collection, java.util.Collection)</a>
+for <a 
href="/maven/struts2-core/apidocs/org/apache/struts2/util/reflection/ReflectionProvider.html#copy(java.lang.Object,
 java.lang.Object, java.util.Map, java.util.Collection, 
java.util.Collection)">ReflectionProvider#copy(Object, Object, java.util.Map, 
java.util.Collection, java.util.Collection)</a>
 for more information.</p>
 
 <blockquote>
diff --git a/content/core-developers/localization.html 
b/content/core-developers/localization.html
index fc156ea45..7ee33b7c7 100644
--- a/content/core-developers/localization.html
+++ b/content/core-developers/localization.html
@@ -179,8 +179,8 @@
 
 <ol>
   <li>the <em>UI Tags</em></li>
-  <li>Messages and Errors from the <a 
href="http://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAware";>ValidationAware</a></li>
-  <li>Within action classes that extend <a 
href="http://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport";>ActionSupport</a>
 
+  <li>Messages and Errors from the <a 
href="http://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/interceptor/ValidationAware";>ValidationAware</a></li>
+  <li>Within action classes that extend <a 
href="http://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/ActionSupport";>ActionSupport</a>
 
 through the <code class="language-plaintext 
highlighter-rouge">getText()</code> method</li>
 </ol>
 
@@ -230,7 +230,7 @@ own implementation using <code class="language-plaintext 
highlighter-rouge">Text
 <code class="language-plaintext 
highlighter-rouge">com.opensymphony.xwork2.ActionSupport</code>. It means you 
have two options here to get I18N working in that case:</p>
 
 <ul>
-  <li>define <code class="language-plaintext 
highlighter-rouge">com/opensymphony/xwork2/ActionSupport.properties</code> and 
put messages there</li>
+  <li>define <code class="language-plaintext 
highlighter-rouge">org/apache/struts2/ActionSupport.properties</code> and put 
messages there</li>
   <li>point <code class="language-plaintext 
highlighter-rouge">default-class-ref</code> to your base class and then defined 
appropriated <code class="language-plaintext 
highlighter-rouge">.properties</code> file (corresponding to
 class’ name or package)</li>
 </ul>
@@ -300,7 +300,7 @@ or details.</p>
 <p>Struts 1 users should be familiar with the application.properties resource 
bundle, where you can put all the messages
 in the application that are going to be translated. Struts 2, though, splits 
the resource bundles per action or model
 class, and you may end up with duplicated messages in those resource bundles. 
A quick fix for that is to create a file
-called ActionSupport.properties in com/opensymphony/xwork2 and put it on your 
classpath. This will only work well if
+called ActionSupport.properties in org/apache/struts2 and put it on your 
classpath. This will only work well if
 all your actions subclass XWork2’s ActionSupport.</p>
 
 <h2 id="search-in-default-bundles-first">Search in default bundles first</h2>
@@ -308,8 +308,8 @@ all your actions subclass XWork2’s ActionSupport.</p>
 <p>Since Struts 2.6 it is possible to enable searching in default bundles 
first instead of performing a full class hierarchy
 scan and then default bundles.</p>
 
-<p>By setting the below flag to <code class="language-plaintext 
highlighter-rouge">true</code> the default implementation of <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/LocalizedTextProvider.html";>LocalizedTextProvider</a>
-(which is <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/util/StrutsLocalizedTextProvider.html";>StrutsLocalizedTextProvider</a>)
+<p>By setting the below flag to <code class="language-plaintext 
highlighter-rouge">true</code> the default implementation of <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/text/LocalizedTextProvider.html";>LocalizedTextProvider</a>
+(which is <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/text/StrutsLocalizedTextProvider.html";>StrutsLocalizedTextProvider</a>)
 will search the default bundles first. In some cases this can improve overall 
application performance.</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;constant</span> <span 
class="na">name=</span><span 
class="s">"struts.i18n.search.defaultbundles.first"</span> <span 
class="na">value=</span><span class="s">"true"</span><span 
class="nt">/&gt;</span>
@@ -322,7 +322,7 @@ will search the default bundles first. In some cases this 
can improve overall ap
 <h2 id="using-only-global-bundles">Using only global bundles</h2>
 
 <p>If you don’t need to use the package-scan-functionality and only base on 
the global bundles (those provided by
-the framework and via <code class="language-plaintext 
highlighter-rouge">struts.custom.i18n.resources</code>) you can use existing <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/util/GlobalLocalizedTextProvider.html";>GlobalLocalizedTextProvider</a>
+the framework and via <code class="language-plaintext 
highlighter-rouge">struts.custom.i18n.resources</code>) you can use existing <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/text/GlobalLocalizedTextProvider.html";>GlobalLocalizedTextProvider</a>
 implementation. To use this please define the following option in your <code 
class="language-plaintext highlighter-rouge">struts.xml</code>:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;constant</span> <span 
class="na">name=</span><span class="s">"struts.localizedTextProvider"</span> 
<span class="na">value=</span><span class="s">"global-only"</span> <span 
class="nt">/&gt;</span>
@@ -334,7 +334,7 @@ implementation. To use this please define the following 
option in your <code cla
 default bundles, you must implement both those interfaces (or subclass the 
existing implementations). You can check
 a small <a 
href="https://github.com/apache/struts-examples/tree/main/text-provider";>example
 app</a> how to use both.
 Please remember that the <code class="language-plaintext 
highlighter-rouge">TextProvider</code> interface is implemented by the <code 
class="language-plaintext highlighter-rouge">ActionSupport</code> class, that’s 
why
-an extra layer - <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?com/opensymphony/xwork2/TextProviderFactory.html";>TextProviderFactory</a></p>
+an extra layer - <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/index.html?org/apache/struts2/text/TextProviderFactory.html";>TextProviderFactory</a></p>
 <ul>
   <li>is needed.</li>
 </ul>
diff --git a/content/core-developers/logging.html 
b/content/core-developers/logging.html
index 2c949ae25..9cb5e7213 100644
--- a/content/core-developers/logging.html
+++ b/content/core-developers/logging.html
@@ -258,7 +258,7 @@ interface, like below:</p>
 <span class="o">}</span>
 </code></pre></div></div>
 
-<p>Check <a 
href="http://struts.apache.org/struts-core/apidocs/com/opensymphony/xwork2/util/logging/package-summary";>the
 source code</a>
+<p>Check <a 
href="http://struts.apache.org/struts-core/apidocs/org/apache/struts2/util/logging/package-summary";>the
 source code</a>
 to see more details.</p>
 
 <h2 id="defining-which-factory-to-use">Defining which factory to use</h2>
diff --git a/content/core-developers/ognl-cache-configuration.html 
b/content/core-developers/ognl-cache-configuration.html
index e2d1fc5ad..7fdf3f485 100644
--- a/content/core-developers/ognl-cache-configuration.html
+++ b/content/core-developers/ognl-cache-configuration.html
@@ -226,7 +226,7 @@ a configuration in struts.xml:</p>
 to implement equivalent methods to the ones the default implementation uses to 
populate those properties.</p>
 
 <p>Beyond the configuration properties, in certain circumstances, developers 
may choose to utilize certain methods to 
-interact with the OGNL caches.  Refer to the API documentation for <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/ognl/OgnlUtil.html";>OgnlUtil</a>.</p>
+interact with the OGNL caches.  Refer to the API documentation for <a 
href="https://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/ognl/OgnlUtil.html";>OgnlUtil</a>.</p>
 
   </section>
 </article>
diff --git a/content/core-developers/validation.html 
b/content/core-developers/validation.html
index 82d6a248e..89992ea0f 100644
--- a/content/core-developers/validation.html
+++ b/content/core-developers/validation.html
@@ -162,7 +162,10 @@
   <li><a href="#turning-on-validation" 
id="markdown-toc-turning-on-validation">Turning on Validation</a></li>
   <li><a href="#validator-scopes" id="markdown-toc-validator-scopes">Validator 
Scopes</a></li>
   <li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
-  <li><a href="#defining-validation-rules" 
id="markdown-toc-defining-validation-rules">Defining Validation Rules</a></li>
+  <li><a href="#defining-validation-rules" 
id="markdown-toc-defining-validation-rules">Defining Validation Rules</a>    
<ul>
+      <li><a href="#validation-files-for-actions-with-slashes" 
id="markdown-toc-validation-files-for-actions-with-slashes">Validation Files 
for Actions with Slashes</a></li>
+    </ul>
+  </li>
   <li><a href="#localizing-and-parameterizing-messages" 
id="markdown-toc-localizing-and-parameterizing-messages">Localizing and 
Parameterizing Messages</a>    <ul>
       <li><a href="#customizing-validation-messages" 
id="markdown-toc-customizing-validation-messages">Customizing validation 
messages</a></li>
     </ul>
@@ -181,7 +184,7 @@ combined with XML and annotation-driven validation.</p>
 <p>Validation also depends on both the <code class="language-plaintext 
highlighter-rouge">validation</code> and <code class="language-plaintext 
highlighter-rouge">workflow</code> interceptors (both are included in the 
default interceptor 
 stack). The <code class="language-plaintext 
highlighter-rouge">validation</code> interceptor does the validation itself and 
creates a list of field-specific errors. 
 The <code class="language-plaintext highlighter-rouge">workflow</code> 
interceptor checks for the presence of validation errors: if any are found, it 
returns the “input” result 
-(by default), taking the user back to the form which contained the validation 
errors.</p>
+(by default), taking the user back to the form which contained the validation 
errors. See <a href="default-workflow-interceptor">Default Workflow 
Interceptor</a> for details on method-specific validation and workflow 
behavior.</p>
 
 <p>If we’re using the default settings <em>and</em> our action does not have 
an “input” result defined <em>and</em>  there are validation 
 (or, incidentally, type conversion) errors, we’ll get an error message back 
telling us there’s no “input” result defined 
@@ -245,7 +248,52 @@ to have many field-validators which is almost always the 
case.</p>
 <p>The following list shows the default validators included in the framework 
and is an example of the syntax used to declare 
 our own validators.</p>
 
-<figure class="highlight"><pre><code class="language-xml" data-lang="xml">404: 
Not Found</code></pre></figure>
+<figure class="highlight"><pre><code class="language-xml" 
data-lang="xml"><span class="cp">&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;</span>
+<span class="c">&lt;!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+--&gt;</span>
+<span class="cp">&lt;!DOCTYPE validators PUBLIC
+        "-//Apache Struts//XWork Validator Definition 1.0//EN"
+        
"https://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"&gt;</span>
+
+<span class="c">&lt;!-- START SNIPPET: validators-default --&gt;</span>
+<span class="nt">&lt;validators&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"required"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.RequiredFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"requiredstring"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.RequiredStringValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"int"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.IntRangeFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"long"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.LongRangeFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"short"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.ShortRangeFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"double"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.DoubleRangeFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"date"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.DateRangeFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"expression"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.ExpressionValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"fieldexpression"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.FieldExpressionValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"email"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.EmailValidator"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"creditcard"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.CreditCardValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"url"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.URLValidator"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"visitor"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.VisitorFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"conversion"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.ConversionErrorFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"stringlength"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.StringLengthFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"regex"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.RegexFieldValidator"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;validator</span> <span class="na">name=</span><span 
class="s">"conditionalvisitor"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validator.validators.ConditionalVisitorFieldValidator"</span><span
 class="nt">/&gt;</span>
+<span class="nt">&lt;/validators&gt;</span>
+<span class="c">&lt;!--  END SNIPPET: validators-default 
--&gt;</span></code></pre></figure>
 
 <blockquote>
   <p><strong>Struts 2.1 and Prior</strong>
@@ -313,6 +361,36 @@ XWork searches up the inheritance tree of the action to 
find default
 validations for parent classes of the Action and interfaces implemented</li>
 </ol>
 
+<p><strong>Note on “Action Alias”:</strong> In this context, “action alias” 
refers to the action name specified in the <code class="language-plaintext 
highlighter-rouge">name</code> attribute of the <code class="language-plaintext 
highlighter-rouge">&lt;action&gt;</code> element in your Struts configuration 
(e.g., <code class="language-plaintext highlighter-rouge">struts.xml</code>). 
For example, if you have <code class="language-plaintext 
highlighter-rouge">&lt;action name="editUser" cl [...]
+
+<h3 id="validation-files-for-actions-with-slashes">Validation Files for 
Actions with Slashes</h3>
+
+<p>When using action names with slashes (enabled via <code 
class="language-plaintext 
highlighter-rouge">struts.enable.SlashesInActionNames</code>), the validation 
file naming follows a special rule: <strong>slashes in the action alias are 
replaced with hyphens</strong>.</p>
+
+<p><strong>Pattern:</strong> <code class="language-plaintext 
highlighter-rouge">ClassName-{action-alias-with-slashes-replaced-by-hyphens}-validation.xml</code></p>
+
+<p><strong>Example:</strong></p>
+
+<p>For this action configuration:</p>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;constant</span> <span 
class="na">name=</span><span 
class="s">"struts.enable.SlashesInActionNames"</span> <span 
class="na">value=</span><span class="s">"true"</span><span 
class="nt">/&gt;</span>
+
+<span class="nt">&lt;action</span> <span class="na">name=</span><span 
class="s">"a/b/myaction.validate"</span> 
+        <span class="na">class=</span><span class="s">"myPath.MyAction"</span> 
+        <span class="na">method=</span><span class="s">"create"</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"input"</span> <span class="na">type=</span><span 
class="s">"tiles"</span><span class="nt">&gt;</span>mytiles<span 
class="nt">&lt;/result&gt;</span>
+<span class="nt">&lt;/action&gt;</span>
+</code></pre></div></div>
+
+<p>The validation file should be named:</p>
+<ul>
+  <li><strong>Action-specific alias validation:</strong> <code 
class="language-plaintext 
highlighter-rouge">MyAction-a-b-myaction.validate-validation.xml</code></li>
+  <li><strong>General action validation:</strong> <code 
class="language-plaintext highlighter-rouge">MyAction-validation.xml</code> 
(applies to all aliases)</li>
+</ul>
+
+<p><strong>Location:</strong> Place validation files in <code 
class="language-plaintext highlighter-rouge">src/main/resources/myPath/</code> 
(following your package structure)</p>
+
+<p>This behavior is implemented in <code class="language-plaintext 
highlighter-rouge">AnnotationActionValidatorManager</code> where <code 
class="language-plaintext highlighter-rouge">context.replace('/', '-')</code> 
converts the action alias for file resolution.</p>
+
 <p>Here is an example for SimpleAction-validation.xml:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="cp">&lt;!DOCTYPE validators PUBLIC 
"-//Apache Struts//XWork Validator 1.0.3//EN"
@@ -631,7 +709,7 @@ and Field validators for email2 field to not be validated 
as well.</p>
 
 <p><strong>Usefull Information:</strong>
 More complicated validation should probably be done in the <code 
class="language-plaintext highlighter-rouge">validate()</code> method on the 
action itself (assuming the action 
-implements <code class="language-plaintext 
highlighter-rouge">Validatable</code> interface which <code 
class="language-plaintext highlighter-rouge">ActionSupport</code> already 
does).</p>
+implements <code class="language-plaintext 
highlighter-rouge">Validatable</code> interface which <code 
class="language-plaintext highlighter-rouge">ActionSupport</code> already 
does). You can also use method-specific validation methods like <code 
class="language-plaintext highlighter-rouge">validate{MethodName}()</code> or 
<code class="language-plaintext 
highlighter-rouge">validateDo{MethodName}()</code> - see <a 
href="default-workflow-interceptor">Default Workflow Interceptor</a> for de 
[...]
 
 <p>A plain Validator (non FieldValidator) that gets short-circuited will 
completely break out of the validation stack. 
 No other validators will be evaluated and plain validators takes precedence 
over field validators meaning that they 
diff --git a/content/getting-started/form-validation-using-xml.html 
b/content/getting-started/form-validation-using-xml.html
index 06221a0c9..272318880 100644
--- a/content/getting-started/form-validation-using-xml.html
+++ b/content/getting-started/form-validation-using-xml.html
@@ -194,6 +194,10 @@ The information that can be edited is encapsulated in an 
object of class Person.
 The XML file that contains the validation rules must be named as 
ActionClassName-validation.xml. In the example 
 application, the XML validation file is named EditAction-validation.xml (see 
src/main/resources/org/apache/struts/edit/action).</p>
 
+<blockquote>
+  <p><strong>Note:</strong> When using action names with slashes (enabled via 
<code class="language-plaintext 
highlighter-rouge">struts.enable.SlashesInActionNames</code>), validation file 
naming follows a special rule where slashes are replaced with hyphens. See <a 
href="../core-developers/validation#validation-files-for-actions-with-slashes">Validation
 Files for Actions with Slashes</a> for detailed information.</p>
+</blockquote>
+
 <p>Struts provides several different validators that you can use in the XML 
validation file. See <a href="../core-developers/validation">Validation</a> 
 for a list of validators you can employ.</p>
 
diff --git a/content/security/index.html b/content/security/index.html
index c9e18dc1b..570402208 100644
--- a/content/security/index.html
+++ b/content/security/index.html
@@ -448,8 +448,8 @@ from <code class="language-plaintext 
highlighter-rouge">save()</code> to <code c
 <h3 id="accepted--excluded-patterns">Accepted / Excluded Patterns</h3>
 
 <p>As from version 2.3.20 the framework provides two new interfaces which are 
used to accept / exclude param names 
-and values - <a 
href="../maven/struts2-core/apidocs/com/opensymphony/xwork2/security/AcceptedPatternsChecker">AcceptedPatternsChecker</a>
 
-and <a 
href="../maven/struts2-core/apidocs/com/opensymphony/xwork2/security/ExcludedPatternsChecker">ExcludedPatternsChecker</a>
 
+and values - <a 
href="../maven/struts2-core/apidocs/org/apache/struts2/security/AcceptedPatternsChecker">AcceptedPatternsChecker</a>
 
+and <a 
href="../maven/struts2-core/apidocs/org/apache/struts2/security/ExcludedPatternsChecker">ExcludedPatternsChecker</a>
 
 with default implementations. These two interfaces are used by the <a 
href="../core-developers/parameters-interceptor">Parameters Interceptor</a> 
 and <a href="../core-developers/cookie-interceptor">Cookie Interceptor</a> to 
check if param can be accepted or must be excluded. 
 If you were using <code class="language-plaintext 
highlighter-rouge">excludeParams</code> previously please compare patterns used 
by you with these provided by the framework in default implementation.</p>

Reply via email to