It's one of those days... As soon as I send something to this list, I figure it out. The problem was my validationFailed forward was not resetting the "action" parameter for my dispatch action and it was hitting save even when it failed. I change the "input" attribute to "edit" (removing the validationFailed forward) and it solved my problem.
If you're reading these - thanks for putting up with me. ;0) Matt > -----Original Message----- > From: Matt Raible [mailto:[EMAIL PROTECTED] > Sent: Saturday, February 28, 2004 1:56 PM > To: '[EMAIL PROTECTED]' > Subject: Validation working, but not stopping action from processing > > > I'm using the 1.2.0 test build on Windows XP. > > I have the following XDoclet-generated action-mapping: > > <action > path="/savePerson" > type="org.appfuse.webapp.action.PersonAction" > name="personForm" > scope="request" > input="validationFailed" > parameter="action" > unknown="false" > validate="true" > > > <forward > name="validationFailed" > path="/editPerson.do" > redirect="false" > /> > <forward > name="edit" > path=".personDetail" > redirect="false" > /> > </action> > > When I click on a button to "save" my form, the validation > kicks in - but it let's my Action continue to execute. I > thought that any validation errors were supposed to call > mapping.getInputForward()? Is that correct? I'm stumped. > Here's my save() method: > > public ActionForward save(ActionMapping mapping, ActionForm form, > HttpServletRequest request, > HttpServletResponse response) > throws Exception { > if (log.isDebugEnabled()) { > log.debug("Entering 'save' method"); > } > > // Extract attributes and parameters we will need > ActionMessages messages = getMessages(request); > PersonForm personForm = (PersonForm) form; > boolean isNew = ("".equals(personForm.getId())); > > if (log.isDebugEnabled()) { > log.debug("saving person: " + personForm); > } > > // Exceptions are caught by ActionExceptionHandler > PersonManager mgr = (PersonManager) getBean("personManager"); > personForm = (PersonForm) mgr.savePerson(personForm); > > // add success messages > if (isNew) { > messages.add(ActionMessages.GLOBAL_MESSAGE, > new ActionMessage("person.added", > > personForm.getFirstName() + " " + > personForm.getLastName())); > > request.getSession().setAttribute(Globals.MESSAGE_KEY, messages); > > return mapping.findForward("mainMenu"); > } else { > messages.add(ActionMessages.GLOBAL_MESSAGE, > new ActionMessage("person.updated", > > personForm.getFirstName() + " " + > personForm.getLastName())); > saveMessages(request, messages); > > return mapping.findForward("edit"); > } > } > > The validation routes the user back to the form, but it also > calles mgr.savePerson and puts the message in the requestion. > So on my page, I end up with the following messages: > > 'First Name' is a required field. > 'Last Name' is a required field. > Information for has been updated successfully. > > Hopefully I'm just banging my head against the wall and it's > something simple... > > Matt > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]