请帮我找到解决方案。
这是xhtml代码:
<p:selectOneMenu value="#{activteBean.act.activiteFamille}"
converter="familleAct"
var="f" required="Une famille est obligatoire" >
<f:selectItems value="#{activteBean.actFamList}" var="famille" itemLabel="# {famille.dsgFam}" itemValue="#{famille}"/>
<p:column>#{f.refFam}</p:column>
<p:column>#{f.dsgFam}</p:column>
</p:selectOneMenu>
这是我的转换器:
@FacesConverter(forClass=ActiviteFamille.class,value="familleAct" )
public class ActiviteFamilleConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String code) {
if (code.trim().equals("")) {
return null;
} else {
ActiviteFamilleDao actFamDao = new ActiviteFamilleDao();
List<ActiviteFamille> actFamList = actFamDao.findAll();
for (ActiviteFamille af : actFamList) {
if (af.getRefFam().equals(code)) {
return af;
}
}
}
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
if (value == null || value.equals("")) {
return "";
} else {
return String.valueOf(((ActiviteFamille) value).getRefFam());
}
}
}
托管bean:
@ManagedBean(name = "activteBean")
@ViewScoped
public class ActivteBean implements Serializable {
private Activite act = new Activite();
private ActiviteDao actDao = new ActiviteDao();
private List<Activite> actList;
private boolean init;
private ActiviteFamilleDao actFamDao = new ActiviteFamilleDao();
private List<ActiviteFamille> actFamList;
public boolean isInit() {
act = new Activite();
actList = actDao.findAll();
actFamList=actFamDao.findAll();
return init;
}
....
}
感谢您的帮助。
答案 0 :(得分:6)
如果equals()
的{{1}}方法未正确实施,可能会发生这种情况。
错误消息表明所选(和转换)的值与列表ActiveFamille
中的任何元素都不匹配。
尝试调试并将断点设置为activteBean.actFamList
的equals()方法,并尝试找出它不匹配的原因。