I’m a bit surprised that this works if you don’t have a task template but only a controller. I think your form handling logic should either be in the controller of the page where the form is actually shown or in the snippet that renders the forms. After all, you need your messages to be shown directly in the page.
However, having multiple identical forms with the same submit value in the same page won’t work.