如何从html表单向类中实体的属性提供数据? (春季MVC)

时间:2018-09-18 04:03:01

标签: hibernate spring-mvc

例如,为了让我更好地理解:我们使用以下类属性定义了该类:

enter image description here

我最感兴趣的是idGenero,idAutor和idType类的属性。

太好了,我可以使用Query<Discos> query = session.createQuery()选择数据。好的,现在我想插入。为此,我创建了以下表单:

    <form:form action="guardarDisco" method="POST" modelAttribute="disco">
<table>
    <tbody>
         <tr>
             <td><label>Nombre del disco:</label></td>
             <td><form:input path="nombre"/></td>
         </tr>
         <tr>
             <td><label>Genero:</label></td>
             <td>
             <form:select path="idGenero" items="${generos}"/>
             </td>
         </tr> 

          <tr>
            <td><label>Tipo disco:</label></td>
            <td>
             <form:select path="idTipo" items="${tipoDisco}"/>
             </td>
         </tr>
         <tr>
             <td><label>Precio:</label></td>
             <td><form:input path="precio"/></td>
         </tr>
         <tr>
             <td></td>
             <td><input type="submit" value="guardar disco"/></td>
         </tr>
    </tbody>
</table>
</form:form>

我正在使用Map在组合框中加载数据。以下服务为我提供了数据库中的音乐流派(genero),作者(autor)和唱片类型(tipo_disco)的列表。

它们都遵循与以下代码完全相同的选择模式

@Override
    public Map<Integer,String> getListAutor() {
        Session session = sessionFactory.getCurrentSession();
        Query<Autor> query = session.createQuery("from Autor",Autor.class);
        List<Autor> autores = query.getResultList();
        Map<Integer,String> map = new LinkedHashMap<Integer,String>();
        for(Autor autor:autores) {
            map.put(autor.getId(),autor.getNombre() + " " + autor.getApellido());
        }
        return map;
    }

最后,我将其添加到Controller类的模型中

@RequestMapping("/agregarDisco")
    public String nuevoDisco(Model model) {
        model.addAttribute("disco",new Discos());
        model.addAttribute("generos",generoService.getListaGenero());
        model.addAttribute("autores",autorService.getListAutor());
        model.addAttribute("tipoDisco",tipoDiscoService.getTipoDiscoList());
        return "addDisco";
    }

好吧,该值在页面的组合框中是完美的,但是如果我调试,填写表格并转到下一页,则不会保存组合框的任何值。而是捕获诸如磁盘名称(这是实体类中的String变量)之类的字段。

我想页面无法捕获值,因为那些类属性是类的实例。

现在,您如何处理此问题?您将如何通过html表单为这些类实例分配值?

0 个答案:

没有答案