【发布时间】:2011-08-21 06:45:13
【问题描述】:
在 selectOneMenu 的五个选项中,我选择了第二个选项并保留了实体。 在编辑持久化实体时,selectOneMenu 始终将最后一个选项作为其值。
例如,
<h:selectOneMenu value="#{userHome.user.leader}">
<f:selectItems value="#{userHome.availableLeaders}" var="leader" itemLabel="# {leader.name}" itemValue="#{leader}"/>
</h:selectOneMenu>
其中availableLeaders 是填充@PostConstruct 方法的用户列表。
我希望 selectOneMenu 在编辑时有第二个选项(选择)。
@FacesConverter(forClass = User.class, value = "userConverter")
public class UserConverter implements Converter {
public UserConverter() {
}
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("DefaultPersistenceUnit");
EntityManager em = emf.createEntityManager();
Query q = em.createQuery("select query");
return q.resultList().get(0);
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
return ((User) value).getName();
}}
在 User.java 中
public boolean equals(Object other) {
if (this.getClass().isInstance(other)) {
return true;
} else {
return false;
}
}
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder();
builder.append(getId());
builder.append(getName());
return builder.toHashCode();
}
【问题讨论】:
标签: jsf