【问题标题】:Validation error value is not valid: primefaces [duplicate]验证错误值无效:primefaces [重复]
【发布时间】:2012-05-13 02:08:57
【问题描述】:

请帮助我找到解决方案。

这是 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;
}
....
}

感谢您的帮助。

【问题讨论】:

  • 您可以在转换器方法中尝试系统,以查看发送和接收的内容。
  • 你在问什么问题?

标签: primefaces


【解决方案1】:

如果ActiveFamilleequals() 方法没有正确实现,就会发生这种情况。

错误消息表明所选(和转换后的)值与列表activteBean.actFamList 中的任何元素都不匹配。

尝试调试并在ActiveFamille的equals()方法中设置断点,并尝试找出不匹配的原因。

【讨论】:

  • 太有帮助了!我遇到了同样的问题,因为我没有在“ActiveFamille”类中定义 equals() 方法。列表中有相应的项目,但 Object 的默认 equals() 是通过引用匹配对象,而不是对象属性。当然,转换器生成的 ActiveFamille 实例是一个全新的实例。
  • 就我而言,equals 或 hashcode 上的断点永远不会命中!
猜你喜欢
  • 2011-10-29
  • 2013-01-06
  • 1970-01-01
  • 2011-09-13
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2011-10-19
相关资源
最近更新 更多