Hi Ute,
although I am pretty sure that I'll go for the Apache rewriting approach, I am interested in your solution. Thanks!

Cheers
Florian

On 1/14/26 7:38 PM, [email protected] wrote:
Hi Florian,
I had same problem migrating from Struts1 to Struts7
I solved it with an Interceptor but also used namespace (what you do not want)
Do you want me to post my solution?
Kind regards Ute

Gesendet mit der mobilen Mail App

Am 14.01.26 um 13:08 schrieb Florian Schlittgen

Great, thanks for your quick reply.
One comment:
3. Outbound redirect handling - either via Apache Header edit
directive, or a custom result type that prepends the locale to
Location headers.
With the introduction of a custom result type, you rely on the Apache
rewriting. If you want to test the application locally without reverse
proxy, the redirect will not work. So I rather would go for Apache
Header edit directive to rewrite the Location header to only loosely
couple Apache to the Struts application.

Cheers
Florian


On 1/14/26 11:47 AM, Lukasz Lenart wrote:
There is no direct support for such a approach in the framework, if
you use Apache HTTP you can add reverse proxy with mod_rewrite plus a
small interceptor, eg.

1. Apache mod_rewrite (inbound):



RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/([a-z]{2})(/.*)?$
    RewriteRule ^/([a-z]{2})(/.*)?$ $2 [E=STRUTS_LOCALE:$1,PT]
    RequestHeader set X-Struts-Locale "%{STRUTS_LOCALE}e"
env=STRUTS_LOCALE

2. Simple interceptor to read the header:

    public class UrlLocaleInterceptor extends AbstractInterceptor {


                                                       @Override



                                                         public String
intercept(ActionInvocation invocation) throws Exception {


                                   HttpServletRequest request =
ServletActionContext.getRequest();


              String locale = request.getHeader("X-Struts-Locale");


                                                                 if
(locale != null) {



       ActionContext.getContext().withLocale(LocaleUtils.toLocale(locale));


                                          }



                                                      return
invocation.invoke();


                                                            }



                                                                    }

3. Outbound redirect handling - either via Apache Header edit
directive, or a custom result type that prepends the locale to
Location headers.

Cheers
Łukasz

śr., 14 sty 2026 o 10:51 Florian Schlittgen <[email protected]> napisał(a):
Hi,

in my Struts2 application, I want the user's current language to be part
of the URL. For example:

http://localhost:8080/myApp/en/my/namespace/myAction.action (English)
http://localhost:8080/myApp/de/my/namespace/myAction.action (German)

Is there a built-in feature in Struts to implement this?
I am using the convention plugin and the application contains a lot of
actions and JSP pages, therefore I looking for way to implement this
without changing existing namespaces or JSP pages.
Anyone who have done this before or have any advice on this?

Instead of implementing it with Struts, I could use my reverse proxy
(Apache HTTP) to rewrite requests (strip out the language part from the
url and turn it into a request parameter). And for the reverse
direction, redirects coming from Struts backend must also be rewritten
(transform the 'Location' response header into the URL form from above).
Any thoughts or advice on this?

Which one would be the better approach?

Kind regards
Florian

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to