方法不从模板接收对象。春天+百里香叶

时间:2019-03-28 18:26:40

标签: java spring thymeleaf

我正在尝试修改以前在数据库中插入的某些注册表。

选择要修改的注册表后,出现一个表格,我在其中放置新数据。 一切都很好,直到这里。

将表单发送到控制器方法后,它没有收到我需要修改的对象,并且当我删除了required =“ false”时,提示“不存在必需的Ejemplar参数'ejemplar'”

希望有人可以给我一点光。预先感谢!

模板中的代码

<div th:if="${ejemplarModificar} != null">
            <form action="/nuevosDatos" method="post">
                <p>
                    <b>Modelo:</b> 
                    <select name="idmoneda"> 
                        <option th:if="moneda.idmoneda != null" th:each="moneda : ${monedas}" 
                          th:value="${moneda.idmoneda}" th:text="${moneda.idmoneda}"></option> 
                    </select> 
                </p>

                <p><b>Ano:</b> <input type='number' name='ano' /></p>
                <p><b>Ciudad:</b> <input type='text' name='ciudad' /></p>
                <p><b>Fecha:</b> <input type='date' name='fecha' /></p>
                <p><b>Estado:</b>
                    <textarea name='estado' rows='5' cols='40'></textarea>
                </p>
                <p>
                    <b>Proveedor:</b> 
                    <select name="cif"> 
                        <option th:if="proveedor.cif != null" th:each="proveedor : ${proveedores}" 
                          th:value="${proveedor.cif}" th:text="${proveedor.nombre}"></option> 
                    </select>
                </p>
                <input type='submit' value='Enviar' />
            </form>
        </div>

代码来自何处:

<div th:case="'M'">
            <table>
                <tr>
                    some unnecesary code
                </tr>
                <tr th:each="moneda : ${monedas}">
                    <td th:text="${moneda.idmoneda}"></td> 
                    <td th:text="${moneda.valor}"></td> 
                    <td th:text="${moneda.diametro}"></td> 
                    <td th:text="${moneda.peso}"></td> 
                    <td th:text="${moneda.unidad}"></td>
                    <td th:text="${moneda.composicion}"></td> 
                    <td th:text="${moneda.descripcion}"></td>
                    <td><a th:href="@{/modificar/M(idmoneda=${moneda.idmoneda})}" th:text="Modificar"></a></td>                     
                </tr>
            </table>

@RequestMapping("/modificar/E")
    public String modificare(@RequestParam long id, Model model) {
        List <Moneda> monedas = repositorioMoneda.findAllByOrderByIdmonedaAsc();
        List <Proveedor> proveedores = repositorioProveedor.findAllByOrderByCifAsc();

        model.addAttribute("monedas", monedas);
        model.addAttribute("proveedores", proveedores);

        Ejemplar ejemplar = repositorioEjemplar.findById(id);
        model.addAttribute("ejemplarModificar", ejemplar);

        return "modificarRegistro";
    }

来自控制器的代码:

   @RequestMapping("/nuevosDatos")
    public String modificar(@RequestParam(required=false) Moneda moneda, @RequestParam(required=true)Ejemplar ejemplar, 
                @RequestParam(required=false)Proveedor proveedor, Model model) {
           if (ejemplar != null) {
                Ejemplar e = repositorioEjemplar.findById(ejemplar.getId());
                e.setAno(ejemplar.getAno());
                e.setCiudad(ejemplar.getCiudad());
                e.setEstado(ejemplar.getEstado());
                e.setFecha(ejemplar.getFecha());
                e.setModelo(ejemplar.getModelo());
                e.setProveedor(ejemplar.getProveedor());

                repositorioEjemplar.save(e);

                return "exito"
            }
      }

0 个答案:

没有答案