2012-04-26 2 views
1

Если параметр запроса «имени» перешел к действию, мы можем получить его в нашем действий класса, если у нас есть поле с именем 'именем. За какой перехватчик отвечает за это? Я посмотрел на код для ParametersInterceptor, но он только устанавливает параметры на стек значение, а не в соответствующих полях класса действийstruts2 - Как параметры запроса заполняются в соответствующие поля класса действия?

ответ

1

но только устанавливает параметры в стек значений, а не в соответствующих поля класса действия

В ваших рассуждениях есть только небольшой сбой: класс действия находится в верхней части стека значений! Так com.opensymphony.xwork2.interceptor.ParametersInterceptor несет ответственность.

0

Как бы то ни было советом, я бы предположил, что у вас фактически нет параметра с именем «имя» в классе действия, а скорее перемещайте такие поля из вашего класса действий в другой класс, который будет служить вашим "модель". Затем, чтобы ваш класс действия реализовал интерфейс ModelDriven. Это поместит класс модели вверху ValueStack вместо экземпляра класса действия, а затем параметр «name» будет отображаться на экземпляр вашей модели.

Разделение проблемы модели/данных в другом классе от проблем, связанных с действием/контролем, сделает ваш код более читабельным и ремонтопригодным. Конечно, если есть только, скажем, один параметр, то разделение его на отдельный класс было бы глупо. Тем не менее, более 2 или 3 параметра, и вы выиграете от разделения.

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