Параметр «метод» не работает (Struts 1) - PullRequest
1 голос
/ 22 июля 2010

В моем файле struts.xml объявлено следующее действие:

    <action path="/updateAccountInfo"
            type="org.myCompany.UpdateAccountAction"
            name="myAccountForm"
            scope="session"
            validate="true"
            parameter="method" 
            input="/updateAccountInfo.jsp">
        <forward name="success" path="/updateAccountInfo.jsp" />
    </action>

На моей странице JSP есть следующая форма:

<html:form action="/updateAccountInfo.do">
    <input type="hidden" name="method" value="sendMessage" />

В моем классе Java у меня есть следующий метод:

public final ActionForward sendMessage(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
    System.out.println("sending");
    return null;
}

Вместо запуска sendMessage Struts вызывает метод execute. Зачем? Мой Struts-конфиг неправильный? Или мне не хватает другого параметра конфигурации?

Ответы [ 3 ]

8 голосов
/ 22 июля 2010

Пожалуйста, сначала убедитесь, что ваше действие расширяет DispatchAction.Возможно, вам не следует переопределять метод execute в этом классе, поскольку этот метод отвечает за извлечение параметра запроса и вызов соответствующего метода.Если вы переопределите выполнение, эта логика больше не будет выполняться.

1 голос
/ 22 июля 2010

Продлевает ли ваша UpdateAccountAction DispatchAction? Вот рабочий пример , который делает то, что вы пытаетесь сделать.

0 голосов
/ 09 декабря 2010

Прежде всего, в html: form action = "/ updateAccountInfo.do"> вы упомянули updateAccountInfo.do и хотите вызвать sendMessage. Как это возможно?? Это другое.

Другое дело, что вам нужно диспетчерское действие, а не класс действия. Кажется, вам требуется несколько методов для вызова Struts, поэтому рекомендуется использовать класс dispatchaction.

Обратитесь на сайт mkyon для получения более подробной информации о том, как использовать диспетчерское действие и когда оно требуется.

...