Нет, вы не совсем правы. Страницы не имеют прямого доступа, если они находятся под WEB-INF
. Плагин соглашения создает дополнительную конфигурацию на основе XML из классов Action
по соглашению. Таким образом, у вас есть доступ только к результатам, возвращаемым этими действиями. Плагин соглашения помещает свою конфигурацию в пакет XWork, как описано в документации и этом ответе. Итак, разрешение конфликтов, что возможно, если вы не укажете родительский пакет. Вы также можете использовать условные аннотации для настройки сгенерированной конфигурации. Плагин соглашения по умолчанию сканирует классы в базовом пакете, которые могут быть struts
или actions
, которые настраиваются и имеют суффикс Action
. Это все настройки по умолчанию для плагина соглашения. Если вы хотите изменить настройки по умолчанию, вы можете использовать постоянный тег в struts.xml
или соответствующие свойства в struts.properties
.
Однако в документации не ясно, как это обрабатывается.
недействующие результаты, которые идентифицируются по URL-адресу
Кроме того, неясно, какой URL-адрес используется для его идентификации. Я думаю, вы уже знакомы с конфигурацией без действия, когда вы можете вернуть результат SUCCESS без выполнения действия, потому что класс действия используется по умолчанию. Но проблема даже не в этом. Плагин соглашения вместе с конфигурацией, которую он создает, упомянутой выше, также помещает неизвестный обработчик, который должен обрабатывать URL-адреса, для которых конфигурация не существует (т.е. не создана соглашением). Это источник проблемы. Плагин также не позволяет заменить/переопределить конфигурацию. К счастью, есть неизвестный менеджер-обработчик (который при необходимости можно заменить), который обрабатывает неизвестные действия через итерацию "unknown-handler-stack"
, которым управляет этот менеджер. С помощью стека обработчиков вы можете настроить порядок повторения неизвестных обработчиков. Обратите внимание, что цикл заканчивается, когда обработчик возвращает конфигурацию действия. Это означает, что если вы создадите свой собственный неизвестный обработчик и установите порядок в стеке, то обработчик соглашения можно будет обойти.
.
person
Roman C
schedule
27.12.2013