Я использую struts2-convention-plugin 2.3.1.2.Struts2 Convention Plugin Action Url
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.convention.default.parent.package" value="qqq"/>
<constant name="struts.convention.package.locators.basePackage" value="zzz.yyy.xxx.action"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="true"/>
<package name="qqq" extends="struts-default" namespace="/">
<!--
Some package configurations
-->
</package>
struts2.xml настроен как указано выше.
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>zzz.yyy.xxx.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
web.xml как указано выше, а корень контекста tomcat -/foo.
Quetstion
Я поместил LoginAction в zzz.yyy.xxx.action пакет, и развернуто приложение, и я имел следующий результат.
- локальный: 8080/Foo/Логин -> OK
- локальный: 8080/Foo/бар/Войти -> OK
- локальный: 8080/Foo/бар/Baz/Войти -> OK
Я немного смущен, потому что это не то, чего я хочу. Я хочу только разрешить первый случай. Что мне делать?
Я верю (не уверен), это связано с механизмом возврата назад пространства имен, но это всего лишь идея, и у меня мало опыта с этим плагином –