【发布时间】:2011-10-31 04:36:22
【问题描述】:
我在 requestScope 中使用 managedBean userHome,实体 'user' 将在其中持久存在。 用户具有映射在多对一关系中的领导列。我的代码如下所示
@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();
}
用户.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: Validation Error: Value is not valid
【问题讨论】: