2013-03-10 6 views
3

Я пытаюсь понять использование класса ActionMappingParametersInteceptor в Struts2.ActionMappingParametersInteceptor - зачем мне это нужно

Глядя в API:

Этот перехватчик устанавливает все параметры от отображения действия, для этого запроса на стек значений. Он работает точно так же, как ParametersInterceptor, только параметры исходят от ActionMapping, а не метода ActionContext.getParameters().

Есть случай, когда ActionMapping класс может содержать различный набор параметров запроса, чем те, я получаю от ActionContext.getParameters()?

Распорки defaultStack перехватчиков, кажется, называть сначала ParametersInterceptor и затем ActionMappingParametersInteceptor, но я просто не вижу никаких причин, чтобы сделать это.

ответ

2

На самом деле actionMappingParams, что расширяет params перехватчик обрабатывает параметры из карты действий с использованием двух методов, которые переопределены и должны быть переопределены: retrieveParameters и addParametersToContext. Первый метод действительно делает с параметрами ActionMapping. Второй добавляет дополнительные параметры в контекст действия.

В этом классе это не-op, поскольку параметры были выбраны из в том же месте. В подклассах должны быть отменены как retrieveParameters(), так и addParametersToContext().

«не-оп» означает никогда не работать до

Лучший способ, чтобы добавить поведение этого перехватчика использовать интерфейс в ParameterNameAware в своих действиях. Тем не менее, если вы хотите, чтобы применял глобальное правило, которое не реализовано в вашем действии, вы можете расширить этот перехватчик и переопределить метод ParametersInterceptor.acceptableName(String).

ParameterNameAware:

Этот интерфейс реализуется действиями, которые хотят объявить приемлемые параметры. Работает совместно с ParametersInterceptor. Например, действия могут потребовать создания белого списка параметров , которые они принимают, или черного списка параметров , которые они отклонят, чтобы клиенты не могли устанавливать другие неожиданные (и возможно опасные) параметры.

Это единственный случай, когда дополнительные параметры могут быть добавлены в контекст действия.

+0

Большое спасибо. Теперь это имеет смысл. – panas

Смежные вопросы