Чтобы я лучше понял, например: у нас есть класс, определенный со следующими атрибутами класса:
Мой общий интерес падает наатрибуты класса 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;
}
и, наконец, я добавляю его в модель в своем классе контроллеров
@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";
}
Хорошо, значения в выпадающем списке страницы идеальны, но если я отлаживаю, заполнитеи перейдите на следующую страницу, значение поля со списком не сохраняется.Вместо этого регистрируются такие поля, как имя диска (которое является строковой переменной в классе сущности).
Я полагаю, что страница не захватывает значения, поскольку эти атрибуты класса являются экземплярами классов.
Теперь, как вы могли бы решить эту проблему?Как бы вы сделали, чтобы присвоить значения для этих экземпляров класса из HTML-формы?