Эта проблема возникла, когда я попытался использовать LinkedHashMap для сохранения записей из базы данных.Я не знаю, в какой степени работает код XHTML, но внешне выглядит хорошо.
Проблема в этой части xhtml:
<tbody>
<tr>
<td>Movie:</td>
<!--td>
<h:selectOneMenu id="foundmovieid" value="#{webRental.idmovie}">
<f:selectItems id="movieid" value="#{webMovie.get_all_movies()}"></f:selectItems>
</h:selectOneMenu>
</td-->
<td>
<h:selectOneMenu value="#{webRental.idmovie}">
<f:selectItems value="#{webMovie.availableMovies.entrySet()}" var="entry"
itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</h:selectOneMenu>
</td>
</tr>
</tbody>
</table>
<h:commandButton value="Submit" action="#{webRental.save()}"></h:commandButton>
Вот WebRental.java:
public class WebRental {
@EJB
private RentalsFacade rf;
private String iduser;
private String idmovie;
//getters and setters
public List<Rentals> get_all_rents() {
return rf.findAll();
}
public void save() {
try {
rf.Save(iduser, idmovie);
} catch (Exception e) {
}
}
}
и WebMovie.java, чья MoviesFacade имеетEntityManager и способ сохранения новых pbject Movies (идентификатор, заголовок, имя и длина режиссера):
@Named
@RequestScoped
public class WebMovie {
@EJB
private MoviesFacade mf;
private String id;
private String title;
private String director;
private int length;
private Map<String, String> availableMovies;
//geters and setters
public List<Movies> get_all_movies() {
availableMovies = new LinkedHashMap<>();
List<Movies> found = mf.findAll();
found.forEach((m) -> {
String first = m.getId();
String second = m.getTitle() + ", " + m.getDirector() + ", " + m.getLength() + " minutes.";
availableMovies.put(first,second);
});
return mf.findAll();
}
public void save() {
try {
mf.Save(id, title, director, length);
} catch (Exception e) {
}
}
}
В xhtml есть заглушенный раздел, и это именно то, что я должен сделать (получить идентификаторыи отправить их), но таким образом, что вы видите только идентификаторы.Неотключенная секция - это та часть, с которой у меня возникают проблемы, поскольку в ней говорится, что значение недопустимо.
Чтобы решить эту проблему, нужно ли использовать «конвертеры»?Если да, то как мне это реализовать?Если нет, то в чем моя ошибка?
Кроме того, в приглушенном разделе есть вызов "get_all_movies ()", но, поскольку он отключен, он не должен вызываться.Как мне вызвать эту функцию за пределами этого приглушенного раздела, чтобы я мог удалить весь раздел после того, как получил SelectOneMenu с работающей картой?