struts-layout使用reqCode提交多个提交按钮

时间:2014-06-11 00:05:13

标签: java jsp java-ee struts

我在JSP页面上使用struts-layout来显示带有单选按钮的表。它有一个提交按钮,可以调用struts动作类中的execute方法。这很好。

我需要在同一个表单中添加另一个提交按钮,以执行另一个方法,或者以某种方式简单地意识到在同一个动作类方法中单击了第二个按钮。我知道这可以使用reqCode完成。但我只是想弄清楚如何。

我的JSP代码:

 <layout:form action="/taskSelected.do" reqCode="execute" >
    <layout:submit value="Show Task Status" styleClass="btn btn-default"/>
    <layout:submit value="troubleshoot" styleClass="btn btn-default" reqCode="troubleshoot"/>
    <layout:collection name="userTasks" title="" styleClass="FORM" selectProperty="uniqueID" selectType="radio">
    <layout:collectionItem title="Task Name" property="name"/>
    <layout:collectionItem title="UID" property="uniqueID" />
    <layout:collectionItem title="Request Time" property="add_info" />
    <layout:collectionItem title="FTP URL" property="ftp_url"/>
    <layout:collectionItem title="Status" property="status" />
    </layout:collection>

我的struts-config.xml

 <action name="taskBean" path="/taskSelected" scope="session" type="com.myapp.struts.taskSelectedAction" validate="false">
        <forward name="success" path="/ShowTaskStatus.jsp"/>
        <forward name="troubleshootPage" path="/ShowTroubleshoot.jsp"/>
        <forward name="failure" path="/ViewTasks.jsp"/>
    </action>

我的动作类第一种方法:

public ActionForward troubleshoot(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    System.out.println("Method 1= " + request.getSession().getAttribute("troubleshoot"));

    if(request.getSession().getAttribute("USER_KEY")==null){
        return mapping.findForward("NotLoggedIn");
    }
    System.out.println("Reached in Troubleshoot");
    return mapping.findForward("troubleshootPage");

}

第二种方法

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    System.out.println("Method 2= " + request.getSession().getAttribute("troubleshoot"));
    if(request.getSession().getAttribute("USER_KEY")==null){
        return mapping.findForward("NotLoggedIn");
    }

这应该很简单,但我不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

在JSP页面中使用两个按钮(我在一个点上尝试过两次,但对我来说不起作用)。

<input type="button" value="Method1" onclick="location.href='taskSelected.do?method=method1';"/>
<input type="button" value="Method2" onclick="location.href='taskSelected.do?method=method2';"/>

在struts-config.xml文件中,添加parameter = method

<action name="taskBean"
        path="/taskSelected" 
        scope="session" 
        type="com.myapp.struts.taskSelectedAction" validate="false"
        parameter=method>

您只需要一个动作类。

public class taskSelectedAction extends org.apache.struts.actions.DispatchAction{

    public ActionForward method1(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception{
       //your code goes here     
    }

    public ActionForward method2(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception{
       //your code goes here
    }
}