PrimeFaces DragDropEvent NullPointerException

PrimeFaces DragDropEvent NullPointerException

尽管如此,我的问题与另一个问题非常相似,但并不完全相同。

我当前的 XHTML 如下所示:

<p:dataGrid id="availableAttachments" value="#{orgUnitCRBean.orgUnit.attachments}" var="attachment" varStatus="status">
    <p:draggable revert="true" for="attachmentButton#{status.index}" disabled="false" readonly="false" rendered="true"/>
    <p:panel toggleable="false" disabled="false" id="attachmentButton#{status.index}" readonly="false" rendered="true" title="#{attachment.fileName}" value="#{attachment.fileName}">
        <p:commandButton ajax="false" disabled="false" readonly="false" rendered="true" value="#{attachment.fileName}">
            <p:fileDownload value="#{orgUnitCRBean.handleFileDownload(attachment)}"/>
        </p:commandButton>
    </p:panel>
</p:dataGrid>
<p:droppable activeStyleClass="ui-state-highlight" dataSource="availableAttachments" tolerance="touch" for="attachmentPanel" disabled="false" readonly="false" rendered="true">
    <p:ajax listener="#{orgUnitCRBean.handleFileDelete}" update="@form" disabled="false" readonly="false" rendered="true"/>
</p:droppable>

Bean 是这样的:

/*
* Delete an attachment.
*/
public void handleFileDelete(DragDropEvent ddEvent) {

 Attachment attachment = ((Attachment) ddEvent.getData());
 System.out.println("Attachment: " + attachment);
 UUID id = attachment.getId();
 String idToBeDeleted = attachment.getId().toString();
}

DragDropEvent 不包含任何数据,所以我在这里得到一个 NullPointerException。从我的角度来看,我真的很接近 PrimeFaces 的展示。在网上找了几个类似的问题,但没有合适的答案。也许有人知道该怎么做,在这边?

仍然不知道,为什么数据对象为空,但我现在的解决方法是 DragDropEvent 的 "dragId",它可用于确定哪个对象已被拖放区域。