Неверный путь успеха вперед в стойках 1.2

Для всех пользователей установлен неверный путь вперед:

У меня есть это в конфигурации struts:

<action path="/abc" type="com.actionclass">
  <forward name="success" path="/jsp/user/abc.jsp" />
</action>

В моем классе действий я изменил путь пересылки «успех» на «www.google.com», если пользователь удовлетворяет некоторым критериям, а затем он перенаправляется туда.

Хотя, как только какой-либо пользователь удовлетворяет этому критерию, все последующие пользователи перенаправляются на «www.google.com», независимо от того, удовлетворяют они критериям или нет, потому что мы используем то же имя сопоставления, что и «успех».

Могу я узнать причину этого? Почему путь из конфигурации struts не выбирается как «abc.jsp» для других пользователей?

P.S. Если я перезапущу сервер, он снова будет работать нормально, пока какой-либо пользователь не удовлетворит критериям и не будет установлен «www.google.com».

Редактировать: Мое действие - это действие выхода из системы, и оно имеет функцию выхода пользователей из системы по разным URL-адресам их организации, в основном после выхода из нашего приложения этот класс перенаправляет их на страницу своей организации, поэтому это динамический URL-адрес, поступающий из базы данных . Хотя я знаю, что это неправильный путь, но я хочу понять концепцию здесь больше, чем решение проблемы.


person Harish Budhwani    schedule 29.08.2018    source источник
comment
Что вы имеете в виду, когда меняете прямой путь на что-то еще в классе действий? Почему ты бы так поступил? Как ты это делаешь? Вы должны определить новый форвард в своей конфигурации.   -  person Dave Newton    schedule 29.08.2018
comment
Мое действие - это действие выхода из системы, и оно имеет функцию выхода пользователей из системы по разным URL-адресам их организации, в основном после выхода из нашего приложения этот класс перенаправляет их на страницу своей организации, поэтому это динамический URL-адрес, поступающий из базы данных. Хотя я знаю, что это неправильный путь, но я хочу понять концепцию здесь больше, чем решение проблемы.   -  person Harish Budhwani    schedule 30.08.2018


Ответы (1)


Изменение пути пересылки «успех» программно изменяет сопоставление struts для всего приложения. Вам следует добавить новый тег <forward> для перенаправления пользователей на другое сопоставление.

Например, я думаю, что ваша конфигурация будет выглядеть примерно так...

<action path="/abc" type="com.actionclass">
   <forward name="success" path="/jsp/user/abc.jsp"/>
   <forward name="redirect" path="www.google.com"/>
</action>

Затем вы должны вернуть результат «перенаправления» в своем actionclass, чтобы перенаправить пользователей в Google.

person Michael    schedule 29.08.2018
comment
Привет, Майкл, мое действие - это действие выхода из системы, и оно имеет функцию выхода пользователей из системы по разным URL-адресам их организации, в основном после выхода из нашего приложения этот класс перенаправляет их на страницу своей организации, поэтому это динамический URL-адрес, исходящий из база данных. Хотя я знаю, что это неправильный путь, но я хочу понять концепцию здесь больше, чем решение проблемы. Пока сервер не будет перезапущен, почему значение xml не выбирается после того, как оно установлено программно? - person Harish Budhwani; 30.08.2018
comment
Конфиг читается один раз при запуске. С этого момента сопоставление успеха с /jsp/user/abc.jsp сохраняется в памяти, и это то, на что ваше приложение будет ссылаться при перенаправлении пользователей (а не на конфигурацию!). Как только пользователь запускает ваш код, который переназначает успешное действие, значение пути в памяти заменяется на www.google.com. Фреймворк не читает вашу конфигурацию struts для каждого перенаправления — он использует то, что находится в памяти. - person Michael; 30.08.2018
comment
Спасибо Михаил за объяснение. Это именно то, что я хотел знать. - person Harish Budhwani; 31.08.2018
comment
Без проблем! Удачного кодирования - person Michael; 31.08.2018