Как получить доступ к свойствам предыдущего Jsp из пользовательского перехватчика?

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

У меня есть jsp, скажем, JSP1, в котором есть форма с полем textInput с name = user

При отправке формы вызывается класс Action. Он имеет доступ к нему с помощью геттеров и сеттеров.

But in a Custom Interceptor, how can i access it?

Я попытался получить его из стека значений как

ValueStack stack = ai.getStack();
String s = stack.findString("user");
stack.set("user",sa.toUpperCase());

Но он возвращает ноль.

Также я попытался использовать переменную String с геттерами и сеттерами в классе CustomInterceptor. Это тоже не послужило цели.

Как получить значение для Interceptor?


person VijayaRagavan    schedule 04.02.2014    source источник
comment
Трудно понять, о чем вы спрашиваете, извините, если это неправильно истолковано: (В общем) У вас есть форма, в которой вы устанавливаете значения. Эта форма передается веб-приложению в виде запроса. Struts2 обрабатывает запрос, устанавливая значения для объекта (среди прочего). Затем визуализируется представление. Итак, как получить переменную в перехватчике? Ну, это зависит от того, где находится ваш перехватчик... это до установки параметров или после? Если до этого вам нужно получить доступ к запросу напрямую: строка запроса, включающая параметры">stackoverflow.com/questions/1578998/, если после...   -  person Quaternion    schedule 04.02.2014
comment
затем вы можете получить доступ к своему классу действий и напрямую найти то, что вам нужно (и извлечь выгоду из конверсий, если они вам потребуются). Кто-то другой может более наглядно продемонстрировать оба метода.   -  person Quaternion    schedule 04.02.2014
comment
Поскольку мы получаем значения, введенные в форму геттерами и сеттерами в классе действий, существует ли аналогичный метод для доступа к тем же значениям в пользовательских перехватчиках?   -  person VijayaRagavan    schedule 05.02.2014
comment
Перехватчики выполняют настройку из запроса... после запуска перехватчика параметров (ваш перехватчик следует за ним), вы можете получить параметры из действия Action action = (Action) actionInvocation.getAction(); Вы захотите создать интерфейс и применить к нему действие, чтобы вы знали, что оно может сделать... Если действие должно быть до перехватчиков params, вам нужно копать в запросе, потому что значения еще не будут установлены.   -  person Quaternion    schedule 05.02.2014
comment
Извини, приятель. Я не понимаю. Можете ли вы объяснить это на примере.   -  person VijayaRagavan    schedule 06.02.2014
comment
Я постараюсь выиграть время, но, чтобы избежать будущих вопросов, не могли бы вы указать, что вы пытаетесь сделать, тогда пример, вероятно, будет намного более точным. Какова цель вашего перехватчика?   -  person Quaternion    schedule 06.02.2014
comment
Значение, которое я ввожу в определенное текстовое поле, должно быть преобразовано в верхний регистр для дальнейшей обработки в классе действий, а затем сохранено в Db, для которого я пытался использовать собственный перехватчик.   -  person VijayaRagavan    schedule 06.02.2014
comment
То, что вы предлагаете, может сработать, но перехватчики - это идея для применения сквозной логики, это, похоже, конкретная проблема. Вместо этого я бы A) просто использовал .toUpperCase() в установщике. Б) Если это относится к нескольким полям, используйте преобразователь типов: struts.apache.org/release/2.0.x/docs/ и с использованием аннотаций struts.apache.org/release/2.3.x/docs/ пока нет времени что-то правильно написать   -  person Quaternion    schedule 06.02.2014
comment
Ну ладно приятель. Большое спасибо.   -  person VijayaRagavan    schedule 07.02.2014
comment
Я думаю, вы получите ответ по этой ссылке: [stackoverflow.com/questions/17650146/ [1]: stackoverflow.com/questions/17650146/   -  person bobLeMarrant    schedule 07.10.2014


Ответы (1)


Вызовите перехватчик defaultStack или params перед пользовательским перехватчиком:

<interceptor-ref name="params"></interceptor-ref>

OR

<interceptor-ref name="defaultStack"></interceptor-ref>

Напишите строку выше, прежде чем регистрировать свой собственный перехватчик с указанным действием.

person Ajit Fawade    schedule 27.12.2016