Struts после отправки формы собирается на пустую страницу - PullRequest
0 голосов
/ 02 февраля 2012

У меня возникла проблема с моим приложением Struts, где пользователю предлагается обновить свои данные с помощью действия формы как userUpdateAction, а компонент формы - UserUpdateForm. У меня есть фильтр сервлета для проверки, вошел ли пользователь в систему или нет.Если он не авторизовался, я перешлю к логину action.if, если он вошел в систему, я покажу ему форму обновления, где после всех успешных проверок она перенаправляется на пустую страницу.

struts-config.xml

action path="/userUpdateAction" type="com.vaannila.action.userUpdateAction" name="UserUpdateForm" input="/update.jsp"  validate="true" scope="request">
            <forward name="success" path="/updateSuccess.jsp"  />
            <forward name="error" path="/update.jsp" />

класс действий

public class userUpdateAction extends Action{

@Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,

            ServletRequest req, ServletResponse res) throws Exception {

        UserUpdateForm userform = (UserUpdateForm)form;

        System.out.println("form values :"+userform.getEmail());

        return mapping.findForward("success");

    }
}

Переадресация имен правильная (успех корректен как в классе, так и в struts-config.xml).Метод execute также корректно переопределяет метод Action Action.

В консоли tomcat я могу видеть как

user already logged in start chain execution
2 Feb, 2012 9:12:10 AM org.apache.struts.chain.commands.servlet.CreateAction createAction
INFO: Initialize action of type: com.vaannila.action.userUpdateAction
errors : {}

userUpdateAction инициализирован, но не выполняет метод execute и переходит на пустую страницу.

1 Ответ

1 голос
/ 23 сентября 2014

В разделе комментариев я вижу, что опубликованная проблема была решена для конкретного пользователя. У меня было идентичное поведение, как описано (отправить запрос http, но возвращалась только пустая страница). Хотел поделиться своим решением для других, тем более что первоначальный ответ помог мне привести мое решение.

Моя команда и я обновляем Struts 1.1 до 1.3 (большой прыжок). Большинство всех наших классов действий использовали метод execute (). Оказывается, что для v1.1, execute () устарела, а execute () был добавлен. В версии 1.2, execute () был удален. Эта информация никогда не находилась в нашем первоначальном исследовании, пока мы не начали модернизацию. Я не знаю, почему наши авторы оригинальных приложений не использовали execute () все эти годы назад.

Мы изменили наши классы действий для использования метода execute (), и все снова заработало.

Надеюсь, это может сэкономить кому-то еще время и усилия в будущем.

Ссылка на Struts v1.1 API

Ссылка на Struts v1.2 API

...