I think that Mike is talking about the case where he uses the validation
fwk. 
There is no way, what he is asking for can be done with the current
implementation(but for implementing the processValidate in your own RP) of
the RP but i think that this should be a nice addition to the future
implementation.

-Sahil-

-----Original Message-----
From: Carlos Fernandez [mailto:[EMAIL PROTECTED]
Sent: Tuesday, November 11, 2003 2:16 PM
To: 'Struts Developers List'
Subject: RE: Suggestion: way to execute code after
form.validate(mapping, request) fails, but before forward to input


you can go thru the list of errors by name, by iterating on
ActionErrors.properties property.

-Carlos.

-----Original Message-----
From: Kakunje, Chidananda (B.) [mailto:[EMAIL PROTECTED]
Sent: Tuesday, November 11, 2003 2:13 PM
To: 'Struts Developers List'
Subject: RE: Suggestion: way to execute code after
form.validate(mapping, request) fails, but before forward to input


ActionErrors is a collection. So once the processValidate() is called, you
can check any errors present in the collection and take action accordingly,
before forwarding in your Action class.

--Chida

-----Original Message-----
From: Mike Kienenberger [mailto:[EMAIL PROTECTED]
Sent: Tuesday, November 11, 2003 1:02 PM
To: [EMAIL PROTECTED]
Subject: Suggestion: way to execute code after form.validate(mapping,
request) fails, but before forward to input


I'm using Struts 1.1.

I want to execute code only if validation fails, but before the forward to 
the input action.
Unfortunately, it seems that RequestProcessor.processValidate() has 
tightly-coupled these two activities, leaving no way for such activity to be

triggered.

At first, I thought I could subclass RequestProcessor and set a boolean 
variable before calling processValidate() and check it on doForward(), 
executing my code if the variable was set, but this will probably fail in a 
multithreaded environment.  Even if I could make this work by temporarily 
setting attributes on my request, it'd still be an ugly hack.

I don't see any reasonable solution to my problem other than subclassing 
RequestProcessor, copying processValidate() into it, and making my change 
there, which seems likely to break after a struts upgrade.

I'd like to recommend that in some future struts version that 
RequestProcessor.processValidate() provide a hook for executing code between

failed validation and forwarding to the input mapping.

In fact, it seems to me that this whole section of code

======================
        // Has an input form been specified for this mapping?
        String input = mapping.getInput();
        if (input == null) {
            if (log.isTraceEnabled()) {
                log.trace("  Validation failed but no input form 
available");
            }
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                               getInternal().getMessage("noInput",
                                                        mapping.getPath()));
            return (false);
        }

        // Save our error messages and return to the input form if possible
        if (log.isDebugEnabled()) {
            log.debug(" Validation failed, returning to '" + input + "'");
        }
        request.setAttribute(Globals.ERROR_KEY, errors);

        if (moduleConfig.getControllerConfig().getInputForward()) {
            ForwardConfig forward = mapping.findForward(input);
            processForwardConfig( request, response, forward);
        } else {
            internalModuleRelativeForward(input, request, response);
        }
======================

should be moved to the equivalent of a 
RequestProcessor.processValidateFailure() method which could then be 
subclassed.

-Mike

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

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

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

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

Reply via email to