【问题标题】:How to remove bean data from list如何从列表中删除 bean 数据
【发布时间】:2012-07-08 03:06:40
【问题描述】:

我有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 没有从我拥有的列表中删除的任何原因。

任何帮助将不胜感激。

【问题讨论】:

  • 我的回答成功了,但我很好奇,为什么 remove(drawingBean) 不起作用?

标签: collections jsf-2 arraylist javabeans


【解决方案1】:

我得到了解决方案。我不得不使用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;
    }
}

Reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2013-01-17
    相关资源
    最近更新 更多