I have a problem, which I am certain you all face regularly: When validation fails for an ActionForm, I need to set attributes in the request object, but I can't because the 'execute' code doesn't run. How have you managed to set attributes on the request object when validation fails?
I have a couple of solutions in mind. 1. Validating Manually: >From reading a bit on Rick Reumann's site (http://www.learntechnology.net/validate-manually.do) a simple way to handle this is to call the validate method within the execute method of the Action. There's a bit of logic that has to be processed in order to capture errors, but it works pretty well. However, I personally feel like it could lead to some sloppy "execute" code. 2. Extending the RequestProcessor: I thought that this idea was genius. And it _almost_ works. My approach was to: 1. Write an interface called "Validatable" with a single method called "validateFailed(mapping, form, request, response)". 2. Make the Action implement the interface. The code in "validateFailed" would run even if the validation of the form failed. Values can be set on the request at this point. 3. Extend the RequestProcessor class, overriding the 'processValidate' method to look like this: protected boolean processValidate( HttpServletRequest request, HttpServletResponse response, ActionForm form, ActionMapping mapping) throws IOException, ServletException, InvalidCancelException { boolean validated = false; validated = super.processValidate(request, response, form, mapping); if(!validated){ Action action = processActionCreate(request, response, mapping); if(action instanceof Validatable){ try { ((Validatable) action).validateFailed(mapping, form, request, response); } catch (Exception e) {} } } return validated; } 4. The code in the 'validateFailed' method runs when the form vaidation fails. Since the request is sent in as an arg to the 'validateFailed' method, I still have a chance to do some work with it. A simple solution! Or so I thought!. The 'validateFailed' code definitely runs as expected. It sets attributes correctly too. I've even debugged to see that the request attributes even make it past the ActionServlet doPost / doGet service methods. But by the time the request makes it to the jsp, the request attributes are mysteriously gone. (I'd love to know why!) I'd like to use this approach, because it seems to fold in the functionality that I want quite elegantly. But obviously, the fact that the request object can't retain values is a major setback... So I'm found wanting. Anything that makes sense and works reliably will do. Ultimately, I'm looking for a best-practices sort of solution to this basic problem. What do you do to work around this? Thanks for your collective wisdom! Eric Rank www.lo-fi.net --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]