Я бы просто добавил плагин конвенций (struts2-конвенцииtions-plugin-x.x.x.jar), где x.x.x - версия, которую вы используете.
Тогда я бы переместил все общедоступные jsp-файлы в / WEB-INF / content и закончил.
В вашем web.xml я не упоминаю никаких файлов приветствия ... но если вы хотите быть явным:
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
При использовании Struts 2.2.1 ваш web.xml должен выглядеть как минимум ...
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>action</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>action</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Если вы хотите сделать это методом struts.xml, просто переместите index.jsp в / WEB-INF и создайте для него отображение действия ... что-то вроде:
<action name="index">
<result>/WEB-INF/index.jsp</result>
</action>
, который будет в пакете с пространством имен "/" или "".
С другой стороны, я давно не смотрел на Local, но вы уверены, что не изобретаете колесо ... перехватчик i18n уже находится в стеке по умолчанию.
Изучите его использование. Короче говоря, для каждого языка определены файлы свойств языка. Если Struts2 определил, что такие свойства используются, то теги struts будут искать значение в своем атрибуте name для соответствующей строки в файле свойств и возвращать значение этой записи карты.
Все это работает довольно гладко. Извините, если это то, что вы уже делаете, но если вы не знали, что это сэкономит вам много времени.