Проблемы при переносе Struts 2.3 на 2.5

Я пытаюсь перейти со Struts 2.3 на 2.5.2, но у меня есть две странные проблемы. Они были хороши в версии 2.3, так что, возможно, проблема в плагине Convention.

Предположим, у меня есть два действия:

mypackage.actions.LimitAction
mypackage.actions.user.UserAction

In 2.3 :

http://myurl/limit.action          -> OK
http://myurl/anything/limit.action -> There is no Action ... which is OK
http://myurl/user/user.action      -> OK

In 2.5:

http://myurl/anything/limit.action -> OK ... which should be There is no Action ...

И если я установлю действие по умолчанию в struts.xml:

<default-action-ref name="other" />

<action name="other" class="mypackage.actions.OtherAction">
    <result />
</action>

затем

http://myurl/limit.action          -> went wrong and OtherAction is shown

Кажется, что если у меня есть действие по умолчанию, то каждое действие в основном пакете (mypackage.actions) скрыто OtherAction, но

http://myurl/anything/limit.action -> still works which is wrong too

Это ошибка в Struts 2.5.2? Как установить действие по умолчанию, не делая действий в основном пакете неправильными? Как я могу исправить отсутствие доступа к действиям в основном пакете с помощью anyurl/*.action


person Tamás Barta    schedule 19.09.2016    source источник


Ответы (1)


Обе проблемы исправляются установкой пространства имен "/" в каждом действии в основном пакете:

@Namespace("/")

Когда URL-адрес запроса

/anything/limit.action 

и Struts не может найти действие, оно будет искать действие LimitAction в пространстве имен по умолчанию "".

person Tamás Barta    schedule 19.09.2016