List.Remove(obj)正在删除不正确的值

时间:2014-01-31 16:37:26

标签: java jsf primefaces enums

我正在使用同一行中的commandLink从<p:datatable>中删除一行代码。

XHTML

<p:dataTable value="#{demandaController.equipeFornecedor}"
    var="equipe" id="dtEquipe" style="width:70%; margin-top:5%">
    ...

    <p:column headerText="Excluir" width="20%">
        <p:commandLink value="Excluir" actionListener="#{demandaController.removerFuncEquipe(equipe)}" update="dtEquipe" ></p:commandLink>
    </p:column>
</p:dataTable>

private List<Equipe> equipeFornecedor = new ArrayList<Equipe>();

public void removerFuncEquipe(Equipe funcionario) {
    equipeFornecedor.remove(funcionario);
}

使用正确的项目值(已检查)调用方法removerFuncEquipe(equipe)

但是......当我尝试通过equipeFornecedor.Remove(item)删除它时,它会删除我列表中不正确的值。 我做错了什么?

编辑

public abstract class DefaultEntity implements Serializable {

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (getId() == null ? 0 : getId().hashCode());
return result;
}

@Override
public boolean equals(final Object obj) {
if (this == obj) {
    return true;
}
if (obj == null) {
    return false;
}
if (getClass() != obj.getClass()) {
    return false;
}
DefaultEntity other = (DefaultEntity) obj;
if (getId() == null) {
    if (other.getId() != null) {
    return false;
    }
} else if (!getId().equals(other.getId())) {
    return false;
}
return true;
}

}

队报:

public class Equipe extends DefaultEntity {
....
}

两个对象ID都是null,调试函数equals,我看到没有满足任何IF条件,然后返回true。 我怎么能解决这个问题?

0 个答案:

没有答案