This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/struts.git
commit 3f4d46a13a98fd1dc502db3b3b90df0f06dca46e Author: Lukasz Lenart <[email protected]> AuthorDate: Mon Nov 2 09:56:56 2026 +0100 WW-4164 docs: describe the extensionless-request rule for generated URLs Co-Authored-By: Claude Opus 5.5 <[email protected]> --- .../specs/2026-11-01-WW-4164-per-action-extensions-design.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/superpowers/specs/2026-11-01-WW-4164-per-action-extensions-design.md b/docs/superpowers/specs/2026-11-01-WW-4164-per-action-extensions-design.md index 1f0c8fb9e..0724d50c2 100644 --- a/docs/superpowers/specs/2026-11-01-WW-4164-per-action-extensions-design.md +++ b/docs/superpowers/specs/2026-11-01-WW-4164-per-action-extensions-design.md @@ -132,9 +132,11 @@ govern both: `getUriFromActionMapping`, through one shared helper that: 1. looks up the target `ActionConfig` (namespace + name) in the runtime configuration; 2. takes the target's effective list (its declared list, or the global list when it declares - none). It keeps the current request's extension when that list contains it (null current - counts as `""`), otherwise uses the list's first entry, and sets the result on the - `ActionMapping`. With no attributes anywhere, the current extension was stripped by the global + none). It keeps the current request's extension when that list contains it, otherwise uses + the list's first entry, and sets the result on the `ActionMapping`. For a declared target with + a current request mapping, a null current extension counts as `""`. With no current request + mapping, or for an undeclared target whose current extension is null, it uses the first entry, + which reproduces today's `lookupExtension`. With no attributes anywhere, the current extension was stripped by the global list and is kept, which reproduces today's output; 3. if the action is unknown, the global list is null and nothing is declared, or the caller already set an extension: change nothing (the mapper's `lookupExtension` fallback applies as
