Struts2形成两个按钮 - 动作未正确处理

时间:2011-03-02 04:29:52

标签: java java-ee struts2

我试过在论坛上搜索这个问题的答案,但我没有成功。我有一个带有两个按钮的Struts2表单,我希望action类根据按下的按钮执行不同的操作。那没有发生。谁能帮我这个?这是我的表单,然后是动作类。

    <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 :(得分:0)

我认为你应该在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”中,您可以用两种不同的方法编写代码,即“批准”和“拒绝”。

答案 1 :(得分:0)

以下是我提出的解决方案的操作代码。

    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";