Я использую managedBean userHome в requestScope, в котором объект "пользователь" будет сохраняться. У пользователя есть столбец лидера, который отображается в отношении ManyToOne. Мой код выглядит следующим образом:
@ManagedBean
@RequestScoped
public class UserHome {
private User user = new User();
// Getters and Setters
private List<SelectItem> selectItems = new ArrayList<SelectItem>();
public UserHome() {
for(User user: availableLeaders) {
selectItems.add(new SelectItem(user.getName(), user));
}
}
public void persis();
}
User.java
public class User {
@Id
@Column
private Integer id;
@Column
privat String name;
@ManyToOne
private User leader;
}
Я пытаюсь получить значение этого лидера через h:selectOneMenu
, как этот
<h:selectOneMenu value="#{userHome.user.leader}" converter="userConverter">
<f:selectItems value="#{userHome.selectItems}"/>
</h:selectOneMenu>
Мой конвертер выглядит следующим образом
@FacesConverter(forClass = User.class, value="userConverter")
public class UserConverter implements Converter {
private Map<String, User> userValues = new HashMap<String, User>();
public UserConverter() {
init();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
return userValues.get(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
System.out.println("RAJASEKARAN "+value);
return ((User)value).getName();
}
public void init() {
UserHome userHome = new UserHome();
for(User user:userHome.availableLeaders()) {
userValues.put(user.getName(), user);
}
}
}
При попытке сохранить пользователя я получаю сообщение об ошибке UserEdit: j_idt18: Ошибка проверки: значение недействительно