Stella:

Any time you incorporate Javascript into your app, you have to wonder if things
will work now/ever/always in this/that/other browser.  So avoiding everything
except the most basic javascript may be a good idea.

What you want to do can be done more cleanly (just in my opinion though) in the
following way:

Write an interface say "MyRequestHandler" with just one method: public String
handleRequest(MyForm);
write classes like "UpdateShopWorkOrderRequestHandler" and
"CreateShopWorkOrderRequestHandler" which implement MyRequestHandler: all the
work gets done here: You have access to the form bean (via the argument) and in
the end you will return a string (which will be used to create your
ActionForward).

Write a suingleton class MyRequestHandlerFactory: all it does is have a hashmap
mapping "actionCommand" strings to appropraite instances of the RequestHandler:
For example: you may have an entry in the hashmap as:
myHandlerMap.put("updateShopWorkOrder", new
UpdateShopWorkOrderRequestHandler());
myHandlerMap.put("createShopWorkOrder", new
CreateShopWorkOrderRequestHandler());
Write a constructor which will construct your hashmap, and write a getInstance
method in the usual way:
public static MyrequestHandlerFactory getInstance()
as well as a
public MyRequestHandler getRequestHandler (String actionCommand)
which just consults the hashamp and returns the appropriate handler.

Finally, write a "superAction" so:

public class MySuperAction extends Action {
public ActionForward perform(ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
 throws IOException, ServletException {

        String actionCommand = request.getParameter("actionCommand");
        MyRequestHandler requestHandler =
MyRequestHandlerFactory.getInstance().getRequestHandler(actionCommand);
        String forwardString = requestHandler.handleRequest((MyForm) form);
        if (mapping.findForward(forwardString) == null) log.debug("path is
null!"); //this si probably an error condition!
        else log.debug("Path is : " +
mapping.findForward(forwardString).getPath()); //bingo!
        return mapping.findForward(forwardString);

    }

I think this method works quite well and has the advantage of simplicity too..
Hope this helps.. Good luck and let me know if you'd like any more
elaboration..:)
Geeta



"Au-Yeung, Stella H" wrote:

> Paul and Hubert:
> If I do the following, just choose one of the paths to be the <html:form
> action="...">, you mean the form action can still be "dynamically
> overwritten" by what is actually picked in the submitForm() action?  I
> thought I tried that and didn't work.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to