我将使用selectonemenu来完成如下操作:
选择单个菜单组件正在按照其预期进行填充。当我提交时,它会显示“验证错误:值无效”。我知道我的实体需要一个适当的equals()方法,因此我使用eclipse只使用id字段生成了它。然后我不得不改变测试getClass() != obj.getClass()到obj instanceof Przedmiot,因为obj.getClass()返回类似于Przedmiot_$$_javassist_1这样的内容。我不确定那是否相关,因为毕竟obj被证明是null。我做错了什么?
编辑:
MyBean是ViewScoped。
有趣的是,使用相同转换器的类似代码在应用程序的其他部分中起作用。区别在于,在工作部分中,我只是查看类型为Przedmiot的列表,并以另一种方式获取它。
<h:selectOneMenu value="#{MyBean.zajecie.przedmiot}">
<f:selectItems value="#{MyBean.przedmioty}" var="p"
itemLabel="#{p.nazwa}" itemValue="#{p}" />
<f:converter converterId="converter.PrzedmiotConverter" />
</h:selectOneMenu>
我的豆子:
private Zajecie zajecie;//+set get
private List<Przedmiot> przedmioty;//+set get
@PostConstruct
private void init() {
przedmioty = przedmiotDao.findByLogin("login");
zajecie = new Zajecie();
}
以及转换方法:
public Object getAsObject(FacesContext context, UIComponent component, String value) {
PrzedmiotDao przedmiotDao = DaoFactory.getInstance().getPrzedmiotDao();
Przedmiot przedmiot = przedmiotDao.findById(Przedmiot.class, Integer.parseInt(value));
return przedmiot;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
Przedmiot przedmiot = (Przedmiot) value;
String idAsString = String.valueOf(przedmiot.getPrzedmiotId());
return idAsString;
}
选择单个菜单组件正在按照其预期进行填充。当我提交时,它会显示“验证错误:值无效”。我知道我的实体需要一个适当的equals()方法,因此我使用eclipse只使用id字段生成了它。然后我不得不改变测试getClass() != obj.getClass()到obj instanceof Przedmiot,因为obj.getClass()返回类似于Przedmiot_$$_javassist_1这样的内容。我不确定那是否相关,因为毕竟obj被证明是null。我做错了什么?
编辑:
MyBean是ViewScoped。
有趣的是,使用相同转换器的类似代码在应用程序的其他部分中起作用。区别在于,在工作部分中,我只是查看类型为Przedmiot的列表,并以另一种方式获取它。
@PostConstruct
private void init() {
student = studentDao.findByLogin(ra.getUser());
}
<h:selectOneMenu value="#{otherBean.przedmiot}">
<f:selectItems value="#{otherBean.student.grupa.przedmiots}" var="p"
itemLabel="#{p.nazwa}" itemValue="#{p}" />
<f:converter converterId="converter.PrzedmiotConverter" />
</h:selectOneMenu>