0

好吧,我在我的 ManagedBean 中创建了一个“动作”来将图片添加到列表中,请看下面的动作:

public void novaFoto(FileUploadEvent event) {
        uploadsFotos.add(event.getFile());
    }

现在,我必须执行以下操作:当用户单击按钮(“删除图片”)时,我必须从列表中删除此图片,但是如果这不是 FileUploadEvent,我如何获取 UploadedFile,只是一个普通的 ActionEvent ?

我的想法是这样的(但是,如果我将使用命令按钮触发此操作,我该如何传递 FileUploadEvent):

public void removerFoto(FileUploadEvent event) {
        for(UploadedFile up : uploadsFotos){
            if (up.getFileName().equals(event.getFile().getFileName()))
                uploadsFotos.remove(up);
        }
    }
4

1 回答 1

0

这在一定程度上取决于您希望如何将列表呈现给用户。

如果您使用数据表,则可以使用迭代 var 来处理您的删除操作。这是一个例子:

<h:dataTable value="#{fileBean.files}" var="file" id="files">                        
      <h:column>
           <h:inputText value="#{file.name}"/>

           <h:commandButton value="delete" action="#{fileBean.delete(file)}">
                          <f:ajax render="@form"/>
           </h:commandButton>
      </h:column>
</h:dataTable>

这在你的 bean 中:

public void delete(UploadedFile file) {
        files.remove(file);
}
于 2013-11-02T14:08:44.470 回答