Форма Struts2 с двумя кнопками - действие не обрабатывается правильно - PullRequest
0 голосов
/ 02 марта 2011

Я попытался найти ответ на этот вопрос на форумах, но мне это не удалось.У меня есть форма Struts2 с двумя кнопками, и я хочу, чтобы класс действий выполнял разные действия в зависимости от того, какая кнопка была нажата.Этого не происходитКто-нибудь может мне с этим помочь?Вот моя форма, за которой следует класс действий.

    <s:form action="ApproveBulletin" method="post">
        <table>
            <tr>
                <td colspan="2"><b>From:</b> <s:property value="name" /></td>
            </tr>
            <tr>
                <td colspan="2"><b>Subject:</b> <s:property value="subject" /></td>
            </tr>
            <tr>
                <td colspan="2"><b>Date:</b> <s:property value="date" /> <br>
                </td>
            </tr>
            <tr>
                <td colspan="2"><s:property value="note" />
                    <s:hidden name="id" value="%{id}" /></td>
            </tr>
            <tr>
                <td><s:submit type="button" name="approve" value="approve" label="Approve" /></td>
                <td><s:submit type="button" name="deny" value="deny" label="Deny" /></td>
            </tr>
        </table>
        <br />
    </s:form>

public String execute() {
    BulletinDAO bulletinDAOInstance = new BulletinDAO();

    if ("Approve".equals(buttonName)) {
        if (bulletinDAOInstance.approveBulletin(id) == true) {
            return "redirect";
        }           
    }

    if ("Deny".equals(buttonName)) {
        if (bulletinDAOInstance.denyBulletin(id) == true) {
            return "redirect";
        }                       
    }

    return "failure";
}

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Вот код действия решения, которое я придумал.

    BulletinDAO bulletinDAOInstance = new BulletinDAO();

    if (approve != null) {
        if (bulletinDAOInstance.approveBulletin(id) == true) {
            HttpSession session = (HttpSession) request.getSession();
            session.setAttribute("confirmation",
                    "Your bulletin has been approved.");
            return "success";
        }
    }

    if (deny != null) {
        if (bulletinDAOInstance.denyBulletin(id) == true) {
            HttpSession session = (HttpSession) request.getSession();
            session.setAttribute("confirmation",
                    "Your bulletin has been denied.");
            return "success";
        }
    }

    return "failure";
0 голосов
/ 02 марта 2011

Я думаю, у вас должно быть 2 разных действия в файле "struts.xml" для 2 кнопок. В jsp вы можете установить действие формы для соответствующей кнопки через javascript.

Вкл. Jsp:

Для «Подтвердить кнопку» установите действие как «ApproveAction», для «Запретить кнопку» установите действие как «DenyAction» через javascript

Образец Struts.xml

....
<action name="ApproveAction" class="com.package.YourActionClass" method="approve">
<result>/pages/Approve.jsp</result>
</action>

<action name="DenyAction" class="com.package.YourActionClass" method="deny">
<result>/pages/Deny.jsp</result>
</action>
...

В «YourActionClass» вы можете написать свой код двумя разными способами, то есть «утверждать» и «отклонять».

...