java – selectonemenu验证错误:值无效
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – selectonemenu验证错误:值无效,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2464字,纯文字阅读大概需要4分钟。
内容图文
参见英文答案 > Validation Error: Value is not valid 3个
我正在使用这样的selectonemenu:
<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>
为myBean:
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;
}
selectonemenu组件正在按预期填充.当我提交时,它显示验证错误:值无效.我知道我的实体需要一个正确的equals()方法,所以我只使用id字段用eclipse生成它.然后我不得不将测试getClass()!= obj.getClass()更改为obj instanceof Przedmiot,因为obj.getClass()返回类似这样的内容:Przedmiot _ $$_ javassist_1.我不确定这是否相关,因为毕竟obj被证明是无效的.我究竟做错了什么?
编辑:
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>
解决方法:
解决了它.它当然写得很糟糕的是equals()方法.
首先,我的问题出了问题. obj没有解析为null但是其他.przedmiotId做到了.对不起.看看eclipse生成的方法:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Przedmiot))//changed this from (getClass() != obj.getClass())
return false;
Przedmiot other = (Przedmiot) obj;
if (przedmiotId == null) {
if (other.przedmiotId != null)
return false;
} else if (!przedmiotId.equals(other.przedmiotId))
return false;
return true;
}
问题出在other.przedmiotId中.使用getter other.getPrzedmiotId()获取值时,它不再解析为null.
内容总结
以上是互联网集市为您收集整理的java – selectonemenu验证错误:值无效全部内容,希望文章能够帮你解决java – selectonemenu验证错误:值无效所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。