Hi Paolo,

What happens here is that both forms target the same page, they're using 
pre-execution and returning redirects so everything is fine until you add 
validation and instead of returning a redirect return a view with validation 
errors. Then the page is rendered in its entirety including the second 
controller. The second controller sees that its a POST request and treats it as 
if its form was submitted.

The way you solve this is by treating the request as a form submission and do 
validation only during pre-execution. Then a POST request not during 
pre-execution instead renders the form as it would for a GET request.

This is an example of ContactFormComponent from the Blossom sample using this 
technique:

[code]
    @RequestMapping(value = "/contact", method = RequestMethod.GET)
    public String viewForm(@ModelAttribute ContactForm contactForm) {
        return "components/contactForm.ftl";
    }

    @RequestMapping(value = "/contact", method = RequestMethod.POST)
    public String handleSubmit(@ModelAttribute ContactForm contactForm, 
BindingResult result, Node content) throws RepositoryException {

        PreexecutionContext preexecutionContext = 
PreexecutionContextHolder.get(MgnlContext.getWebContext().getRequest());
        if (preexecutionContext == null || 
!preexecutionContext.getUuid().equals(MgnlContext.getAggregationState().getCurrentContentNode().getIdentifier()))
            return viewForm(contactForm);

        new ContactFormValidator().validate(contactForm, result);

        if (result.hasErrors()) {
            return "components/contactForm.ftl";
        }

        return "website:" + content.getProperty("successPage").getString();
    }
[/code]

-- 
Context is everything: 
http://forum.magnolia-cms.com/forum/thread.html?threadId=41c73e9d-3543-4218-893e-b79d0933212f


----------------------------------------------------------------
For list details, see: http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com>
----------------------------------------------------------------

Reply via email to