我正在使用同一行中的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
。
我怎么能解决这个问题?