¿Cómo recibir un controlador y enviar un modelo al mismo tiempo en spring?

Iniciado por WHK, 31 Octubre 2016, 19:26 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, tengo un controlador y un template, estoy usando Spring boot y Thymeleaf.

Por lo que yo entiendo, para poder manipular formularios debo crear un modelo y este enviarselo como objeto al formulario, hasta aca todo bien, el problema está en la petición post ya que por un lado recibo el modelo como argumento de la función pero ya no tengo el modelo para poder enviar datos al template.

Controlador:
Código (java) [Seleccionar]
@Controller
public class Main {

    @GetMapping("/")
    public String httpGet(Model model){

        FormModel form_model = new FormModel();
        model.addAttribute("form_model", form_model);
        model.addAttribute("demo", "abc");

        return "main_template";
    }

    @PostMapping("/")
    public String httpPost(@ModelAttribute ModelForm form_model){

        FormModel form_model = new FormModel();

        // <-- Cómo envío model al template si no tengo model?
        model.addAttribute("form_model", form_model);
        model.addAttribute("demo", "abc");

        return "main_template";
    }
}


Mi template:
Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Demo</title>
    </head>
    <body>
        <form class="form-signin" action="#" method="post" th:action="@{/}" th:object="${form_model}">
            <input th:field="*{email}" required="required" type="email" />
            <input th:field="*{password}" type="password" />
            <p th:text="${demo}"></p>
            <button type="submit">Submit</button>
        </form>
    </body>
</html>


Lo que yo entiendo acá: https://spring.io/guides/gs/validating-form-input/ es que primero tengo una funcion para recibir la petición get, como argumento viene un objeto llamado model el cual se encarga de enviar variables al template, como por ejemplo el objeto encargado del formulario, despues en la petición post pasa un solo argumento de modelo el cual es el objeto del formulario mas un validador, hasta acá todo bien, digamos que hubo un error en el formulario y necesito volver a cargar el formulario, necesito pasar otraves el objeto, pero no tengo como mandarlo porque no tengo el objeto llamado model y tampoco puedo iniciarlo desde la función, entonces que hago?

¿cómo puedo recibir el modelo del formulario en una petición post y al mismo tiempo comunicarme con el contenido en html enviando variables?