How about this one...
Make the class public.
Jay
On Mon, 15 Apr 2002, Jason B Menard wrote:
> This one is driving me crazy. I've already checked the archive but found
> nothing relevant. I get the following error whenever I run the following
> action:
>
> No action instance for path /addToCart could be created
>
> The other actions are found, just not this one. Here's the relevant parts
> of my struts-config.xml:
>
> <struts-config>
>
> <!-- ========== Global Forward Definitions
> ============================== -->
> <global-forwards>
>
> <forward name="error" path="/error.jsp"/>
> <forward name="welcome" path="/do/welcome"/>
>
> </global-forwards>
>
> <!-- ========== Action Mapping Definitions
> ============================== -->
> <action-mappings>
>
> <action path="/addToCart"
> type="y21.isac.struts.action.AddToCartAction">
> <forward name="success" path="/confirmAddToCart.jsp"/>
> </action>
>
> <action path="/welcome"
> type="y21.isac.struts.action.WelcomeAction"
> name=""
> scope="request"
> input="">
> <forward name="success" path="/welcome.jsp"/>
> </action>
>
> <!-- Test Actions -->
>
> <action path="/testStart"
> type="y21.isac.struts.action.IsacTestStartAction">
> <forward name="success" path="/do/welcome"/>
> <forward name="AddToCartAction" path="/do/addToCart"/>
> </action>
>
> </action-mappings>
> </struts-config>
>
> I have tried /addToCart both with and without an ActionForm just to see if
> it made any difference, but it didn't. Wanting to make sure whether or not
> the ActionServlet was finding AddToCartAction, I added the following snippet
> to IsacTestStartAction (which is where I'm calling /addToCart from):
>
> try
> {
> Class.forName("y21.isac.struts.action.AddToCartAction",
> true, this.getClass().getClassLoader());
> System.err.println("ISAC Test Message: AddToCartAction
> Found");
> }
> catch (Exception ex)
> {
> ex.printStackTrace();
> System.err.println("ISAC Test Message: AddToCartAction NOT
> Found");
> }
>
> The AddToCartAction class is reported as found (removing the class file gave
> me the expected "NOT Found"). However if I change the Class.forName line to
> read:
>
> Class.forName("y21.isac.struts.action.AddToCartAction", true,
> request.getClass().getClassLoader());
>
> I get a ClassNotFoundException and the "NOT Found" message. The class files
> are where they should be however. What I can't understand is how
> WelcomeAction and IsacTestStartAction can be found, but AddToCart isn't.
> I've stripped the code from AddToCartAction down to the point where all it
> does is return the ActionForward.
>
> Here are the calls to the action from my jsp:
>
> <html:link page="/do/testStart?testLevel=oo&test=AddToCartAction">Add To
> Cart Action Test</html:link>
> <html:link page="/do/addToCart">Add To Cart Action Direct</html:link>
>
> Does anyone have any ideas? Here is the code for IsacTestStartAction and
> AddToCartAction for reference. Thanks in advance.
>
> Jason
>
> ========================
>
> package y21.isac.struts.action;
>
> import java.io.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import org.apache.struts.action.*;
>
> class AddToCartAction extends org.apache.struts.action.Action
> {
> public ActionForward perform(ActionMapping mapping,
> ActionForm form,
> HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException
> {
> return mapping.findForward("success");
> }
> }
>
> ========================
>
> package y21.isac.struts.action;
>
> import java.io.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import org.apache.struts.action.*;
> import y21.isac.IsacUser;
> import netscape.ldap.LDAPException;
>
> public class IsacTestStartAction extends Action
> {
>
> public ActionForward perform(ActionMapping mapping,
> ActionForm form,
> HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException
> {
> ActionErrors errors = new ActionErrors();
> IsacUser user = new IsacUser();
> String testLevel = request.getParameter("testLevel");
> try
> {
> if ("tb".equals(testLevel))
> user.load("isac-tb-1");
> else if ("oo".equals(testLevel))
> user.load("isac-oo-1");
> else if ("bo".equals(testLevel))
> user.load("isac-bo-1");
> else if ("ao".equals(testLevel))
> user.load("isac-ao-1");
> else if ("pmbm".equals(testLevel))
> user.load("isac-pm-1");
> else
> {
> System.err.println("Error in IsacTestStartAction: testLevel
> not recognized");
> return ( mapping.findForward("error") );
> }
> }
> catch (LDAPException e)
> {
> e.printStackTrace();
> errors.add(ActionErrors.GLOBAL_ERROR,
> new ActionError("error.exception.ldap"));
> saveErrors(request, errors);
> return(mapping.findForward("error"));
> }
>
> request.getSession().setAttribute("user", user);
>
> String test = request.getParameter("test");
> if ("AddToCartAction".equals(test))
> {
> System.err.println("ISAC Test Message: Testing
> AddToCartAction");
> try
> {
> Class.forName("y21.isac.struts.action.AddToCartAction",
> true, request.getClass().getClassLoader());
> System.err.println("ISAC Test Message: AddToCartAction
> Found");
> }
> catch (Exception ex)
> {
> ex.printStackTrace();
> System.err.println("ISAC Test Message: AddToCartAction NOT
> Found");
> }
> return mapping.findForward("AddToCartAction");
> }
>
> System.err.println("ISAC Test Message: Testing WelcomeAction");
> return ( mapping.findForward("success") );
> }
> }
>
>
>
>
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>