Struts 2 - сопоставленные действия, работающие с любым URL - PullRequest
5 голосов
/ 08 декабря 2011

Я создаю веб-приложение на Struts2, и у меня возникла проблема с сопоставленными действиями, работающими с любым URL-адресом.

В моем файле struts.xml я настроил пакет с пространством имен «/ registration» с несколькими действиями, основным из которых является «register». Корневой контекст моего приложения - «app / test».

Чтобы получить доступ к форме регистрации, я могу зайти на "localhost: 8080 / app / test / registration / register.action", и она загрузит мою форму и прекрасно работает.

Однако, если что-либо добавлено к URL-адресу после пространства имен, например «localhost: 8080 / app / test / registration / произвольный / text / here / register.action», форма все еще загружается.

Я бы хотел, чтобы это не происходило, чтобы вы могли получить доступ к форме только по правильному URL. Я пробовал много разных вариантов конфигурации в struts.xml и web.xml безрезультатно, и я не могу легко найти знания по этому вопросу в Интернете.

Любая помощь будет оценена, спасибо!

struts.xml

<struts>
    <package name="myPackage" namespace="/registration" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
        </result-types>
        <action name="register" class="edu.uconn.test.action.RegistrationAction" method="input">
            <result name="input" type="tiles">/register.tiles</result>
        </action>
    </package>
</struts>

1 Ответ

7 голосов
/ 08 декабря 2011

Установите для константы struts.mapper.alwaysSelectFullNamespace значение true:

<constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

Это может привести к непредвиденным последствиям при использовании поддержки S2 произвольных параметров в URL-адресах (например, подстановочные знаки, сопоставление с регулярным выражением).

...