将链接值传递给bean

Mav*_*ick 5 html java jsp struts-1

我有一个JSP文件,其中包含如下链接:

<a href="links.do?method=homeAdmin">
<a href="links.do?method=signUp">
Run Code Online (Sandbox Code Playgroud)

我有一个动作类LinkAction.java:

public class LinkAction extends org.apache.struts.action.Action {

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

        return mapping.findForward("signUp");
    }
    public ActionForward homeAdmin(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        return mapping.findForward("homeAdmin");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用.但是当我把它改成这样的东西时,它只适用于signUp动作.

public class LinkAction extends org.apache.struts.action.Action {

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

        return mapping.findForward("signUp");
    }

}
Run Code Online (Sandbox Code Playgroud)

我也尝试过把它改成

public class LinkAction extends DispatchAction { ... }
Run Code Online (Sandbox Code Playgroud)

这是我的 struts-config.xml

<action input="/index.jsp"
        name="signUp" 
        path="/links" 
        scope="session" 
        type="Actions.LinkAction">
   <forward name="signUp" path="/signUp.jsp"/>
   <forward name="homeAdmin" path="/homeAdmin.jsp"/>
</action>
Run Code Online (Sandbox Code Playgroud)

我想将此单个操作文件用于我的网页中的所有链接.我该怎么做?

Pau*_*gas 2

您需要添加parameter="method". 这标识包含方法名称的请求参数。

如果您有下一个动作课程:

package actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class LinkAction extends DispatchAction {

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

        return mapping.findForward("signUp");
    }

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

        return mapping.findForward("homeAdmin");
    }
}
Run Code Online (Sandbox Code Playgroud)

您将需要在文件中进行以下配置struts-config.xml

<form-beans>
    <form-bean name="SignUpForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="fname" type="java.lang.String" />
        <form-property name="lname" type="java.lang.String" />
        <form-property name="usr" type="java.lang.String" />
        <form-property name="pwd" type="java.lang.String" />
    </form-bean>
</form-beans>
<action-mappings>
    <action path="/links"
            type="actions.LinkAction"
            name="SignUpForm"
            input="/index.jsp"
            parameter="method"
            scope="session">
       <forward name="signUp" path="/signUp.jsp"/>
       <forward name="homeAdmin" path="/homeAdmin.jsp"/>
    </action>
</action-mappings>
Run Code Online (Sandbox Code Playgroud)

也可以看看org.apache.struts.actions.DispatchAction