0

DrawingBean

public class DrawingBean {
    String drawingTitle;

    public String getDrawingTitle() {
        return drawingTitle;
    }

    public void setDrawingTitle(String drawingTitle) {
        this.drawingTitle = drawingTitle;
    }
}

在 JSF 中,我的页面drawingPatentss.xhtml包含以下h:form标签。

<h:inputText value="#{PersonalInformationDataBean.drawingTitle}" size="80" id="drawingTitle" />
<h:commandButton value="Upload More Drawing" action="# {PersonalInformationDataBean.checkMyDrawingPageData()}" />

<h:dataTable id="patentDrawingList" var="patentDrawingList" value="#{PersonalInformationDataBean.drawingList}"  border="1" width="30%">
<h:column>
<f:facet name="header">
<h:outputText value="Drawing Title" />
</f:facet>
<h:outputText value="#{patentDrawingList.drawingTitle}"/> 
<h:commandButton value="Delete" action="#{PersonalInformationDataBean.removeDataFromDrawingList()}">
<f:setPropertyActionListener target="#{PersonalInformationDataBean.drawingTitle}" value="#{patentDrawingList.drawingTitle}" />
</h:commandButton>
</h:column>
</h:dataTable>

PersonalInformationDataBean.java我有

private List<DrawingBean> drawingList = new ArrayList<DrawingBean>();
private String drawingTitle;
DrawingBean drawingBean;
// getter and setter for all of above.

public String checkMyDrawingPageData() {
drawingBean = new DrawingBean();
drawingBean.setDrawingTitle(drawingTitle);
drawingList.add(drawingBean);
return "drawingPatentss?faces-redirect=true";
}

public String removeDataFromDrawingList() {
    drawingBean = new DrawingBean();
    drawingBean.setDrawingTitle(drawingTitle);
    boolean removedStatus = false;
    removedStatus = drawingList.remove(drawingBean);
    System.out.println("removed status === " + removedStatus);
    return "drawingPatentss?faces-redirect=true";
}

但是,该 bean 并未从列表中删除...

但是,如果我在下面添加以下行removeDataFromDrawingList(),列表就会更新。

    drawingBean = new DrawingBean();
    drawingBean.setDrawingTitle("Temp Title");
    drawingList.add(drawingBean);

请求 bean 没有从我拥有的列表中删除的任何原因。

任何帮助将不胜感激。

4

1 回答 1

0

我得到了解决方案。我不得不使用Iterator类。下面的代码成功了......

drawingBean = new DrawingBean();
drawingBean.setDrawingTitle(drawingTitle);
boolean removedStatus = false;

for (Iterator itr=drawingList.iterator();itr.hasNext();) {
    drawingBean = (DrawingBean) itr.next();
    if (drawingBean.getDrawingTitle().equals(drawingTitle)) {
        itr.remove();
        removedStatus = true;
    }
}

参考

于 2012-07-08T11:43:50.590 回答