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"><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">/></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"><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">/></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"><?xml version="1.0"
encoding="UTF-8"?></span>
+<span class="c"><!--
+/*
+ * 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.
+ */
+--></span>
+<span class="cp"><!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator Definition 1.0//EN"
+
"https://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"></span>
+
+<span class="c"><!-- START SNIPPET: validators-default --></span>
+<span class="nt"><validators></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+<span class="nt"></validators></span>
+<span class="c"><!-- END SNIPPET: validators-default
--></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"><action></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"><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"><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">/></span>
+
+<span class="nt"><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">></span>
+ <span class="nt"><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">></span>mytiles<span
class="nt"></result></span>
+<span class="nt"></action></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"><!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>