Метод параметра не работает (Struts 1)

У меня есть следующее действие, объявленное в моем файле 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 неверна? Или я пропустил другой параметр конфигурации?


person David    schedule 22.07.2010    source источник


Ответы (3)


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

person Jörn Horstmann    schedule 22.07.2010
comment
Я переопределял метод выполнения. Кажется, это нарушает логику вызова метода DispatchAction.... - person David; 22.07.2010

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

person Pat    schedule 22.07.2010
comment
Да, он расширяет DispatchAction. Я попытаюсь сравнить свой код с примером и посмотреть, смогу ли я найти какие-либо различия..... - person David; 22.07.2010

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

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

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

person Satya    schedule 09.12.2010