Jsf 2 Primefaces收集器移除不工作
我正在测试Showcase中为我的代码提供的primefaces收集器示例 我在某处读到有必要为此重写equals和hashcode方法 即使重写了这些方法,我仍然会得到相同的错误 请告诉我我的代码出了什么问题 User.javaJsf 2 Primefaces收集器移除不工作,jsf-2,collections,primefaces,Jsf 2,Collections,Primefaces,我正在测试Showcase中为我的代码提供的primefaces收集器示例 我在某处读到有必要为此重写equals和hashcode方法 即使重写了这些方法,我仍然会得到相同的错误 请告诉我我的代码出了什么问题 User.java @ManagedBean public class User implements Serializable{ public String name; public String designation; pu
@ManagedBean
public class User implements Serializable{
public String name;
public String designation;
public String division;
public User(String name,String division){
setName(name);
setDivision(division);
}
public User(){
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public String getDivision() {
return division;
}
public void setDivision(String userDivision) {
this.division = userDivision;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
commApprover.java
@ManagedBean
@ViewScoped
public class CommApprover implements Serializable{
private User approver = new User();
private List<User> approvers = new ArrayList<User>();
public String reinit() {
approver = new User();
return null;
}
public User getApprover() {
return approver;
}
public void setApprover(User approver) {
this.approver = approver;
}
public List<User> getApprovers() {
return approvers;
}
public void setApprovers(List<User> approvers) {
this.approvers = approvers;
}
@Override
public boolean equals(Object o)
{
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
if (approver!= null ? !approver.equals(this.approver) : this.approver != null)
return false;
return true;
}
@Override
public int hashCode()
{
int result = approver.hashCode();
return result;
}
}
@ManagedBean
@视域
公共类CommApprover实现可序列化{
私人用户审批人=新用户();
私有列表审批人=新建ArrayList();
公共字符串reinit(){
审批人=新用户();
返回null;
}
公共用户getApprover(){
返回批准人;
}
公共审核人(用户审核人){
this.approver=批准人;
}
公共列表getApprovers(){
返回批准人;
}
公共审批人(列出审批人){
this.approvers=批准人;
}
@凌驾
公共布尔等于(对象o)
{
if(this==o)
返回true;
如果(o==null | | getClass()!=o.getClass())
返回false;
if(approver!=null?!approver.equals(this.approver):this.approver!=null)
返回false;
返回true;
}
@凌驾
公共int hashCode()
{
int result=approver.hashCode();
返回结果;
}
}
index.xhtml
这篇文章很旧,但我遇到了同样的问题,经过一些调试后,我发现这个问题与hashCode和hashCode的错误实现有关,使用转换器或p:collector时,您必须实现hashCode和equals来比较实体中的所有字段,否则即使您尝试删除的项目是正确的,也会失败。此外,建议您重写Pojo中而不是ManagedBean中的那些属性。这篇文章帮助我理解了这个问题如果你发布了错误,可能会有所帮助。请注意,实际上没有错误。但是删除链接不起作用。。只有添加工作项才能解决此问题?我遇到了同样的问题
<p:growl id="msgs" />
<p:panel header="Approval Route ">
<h:panelGrid columns="3" id="grid">
<h:outputText value="Name*" />
<h:outputText value="Designation*" />
<h:outputText value="Division*" />
<p:inputText id="app_name" value="#{commApprover.approver.name}" required="true"/>
<p:inputText id="app_designation" value="#{commApprover.approver.designation}" required="true"/>
<p:inputText id="app_division" required="true" value="# {commApprover.approver.division}" />
<p:commandButton id="btn_add" value="Add" update="approvers @parent" action="#{commApprover.reinit}" >
<p:collector value="#{commApprover.approver}" addTo="#{commApprover.approvers}" />
</p:commandButton>
</h:panelGrid>
</p:panel>
<p:outputPanel id="approvers">
<p:dataTable id="approversTable" value="#{commApprover.approvers}" var="approver">
<p:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{approver.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Designation" />
</f:facet>
<h:outputText value="#{approver.designation}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Division" />
</f:facet>
<h:outputText value="#{approver.division}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Operation" />
</f:facet>
<p:commandLink ajax="true" value="Remove" update=":appform:approvers" process=":appform:approvers">
<p:collector value="#{approver}" removeFrom="#{commApprover.approvers}" />
</p:commandLink>
</p:column>
</p:dataTable>
</p:outputPanel>
</h:form>