On 4/19/05, Joe Germuska <[EMAIL PROTECTED]> wrote: > At 11:06 PM -0700 4/18/05, Michael J. wrote: > >2) You can set the params too, it is not a big deal. Do not edit > >existing ActionForward from findForward, instead create a new one and > >append query parameters. > > Note that about two months ago, a class called "ActionRedirect" was > added to clean up this particular use case (adding parameters to a > redirecting ActionConfig.) > > http://cvs.apache.org/viewcvs.cgi/struts/core/trunk/src/share/org/apache/struts/action/ActionRedirect.java?root=Apache-SVN&rev=153901&view=markup > > No Struts release has been made since this was added, but you should > know it's there and if you're using a nightly build, you should use > it. > > Joe
Whoa, a whole class. I use just a simple method, which appends parameters for redirected request. There is no point to do this for forwarded parameters, they can be passed through server-side objects. This utility method is quite simple, it does not do a lot of error handling, nor does it check for character set or for maximum URL length. I use the same mappings from struts-config.xml file, I just append request query parameters. This is my action class: ------------------------ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ... return ActionTools.goForward( mapping, // mapping of this action "editItem", // edit action name: "editItem.do" true, // redirect == true new String[] {"id="+itemId} // ex: "id=1234" ); } This is my helper method: ------------------------- /** * Updates ActionForward object with URL parameters. * @param actionMapping action mapping object * @param forwardName mapping name * @param redirect true if redirect, false if forward * @param urlParams array of "key=value" strings which * should be added to actionForward path * as HTTP GET parameters * @return modified ActionForward object with updated GET parameters */ public static ActionForward goForward(ActionMapping actionMapping, String forwardName, String[] urlParams) { // Find ActionForward object, defined in struts-config.xml ActionForward actionForward = actionMapping.findForward(forwardName); if (actionForward == null) return null; // Append URL parameters. Important on redirect. String actionPath = actionForward.getPath(); if (actionPath != null && urlParams != null) { for (int i = 0; i < urlParams.length; i++) { actionPath += i==0 ? "?" : "&"; actionPath += urlParams[i]; } } // Create new ActionForward object. Stuts does not // allow to modify ActionForward objects, statically // defined in struts-config.xml ActionForward actionRedirect = new ActionForward(actionForward.getName(), actionPath, redirect ); return actionRedirect; } Michael. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]