例如,为了让我更好地理解:我们使用以下类属性定义了该类:
我最感兴趣的是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表单为这些类实例分配值?