0

我正在使用 Primefaces 3.4 和 Groovy。我创建了对象Part并且Attachment

class Part {
    Attachment selectedAttachment
    List<Attachment> attachments = []

    AttachmentDataModel getAttachmentModel() {
        return new AttachmentDataModel(attachments)
    }
}

class Attachment {
    String fileName
    String fileType
    String description
}  

我的视图嵌套了 DataTables,如下所示:

<p:dataTable value="#{mybean.parts}" var="part" rendered="#{mybean.attachmentsFound}">
    <p:column>
        <p:dataTable 
            var="attachment"
            selectionMode="single"
            value="#{part.attachmentModel}"
            selection="#{part.selectedAttachment}"
            >
            <p:column headerText="File Name">
                #{attachment.fileName}
            </p:column>
            <p:column headerText="File Description" style="width: 200px">
                #{attachment.description}
            </p:column>
            <p:column headerText="File Type" style="width: 20px">
                #{attachment.fileType}
            </p:column>
        </p:dataTable>
    </p:column>
</p:dataTable>

我希望能够为每个部件选择一个附件。

问题:只有第一部分selectedAttachment被设置为最后选择的附件!

问题:如何启用每个零件实例来保存其选定的附件?谢谢你的时间。

注意:如果我调试我的 AttachmentDataModel,我会看到getRowData与我所做的一样多的选择。

4

1 回答 1

1

我仍在寻找答案,但我找到了解决方法。我改变了看法:

<p:dataTable value="#{mybean.parts}" var="part" rendered="#{mybean.attachmentsFound}">
    <p:column>
        <p:dataTable 
            var="attachment"
            selectionMode="single"
            value="#{part.attachmentModel}"
            selection="#{part.selectedAttachment}"
            >
            <!-- WORKAROUND -->
            <p:ajax event="rowSelect" listener="#{mybean.onRowSelect}" />
            <p:ajax event="rowUnselect" listener="#{mybean.onRowUnselect}" />
            <!-- /WORKAROUND -->
            <p:column headerText="File Name">
                #{attachment.fileName}
            </p:column>
            <p:column headerText="File Description" style="width: 200px">
                #{attachment.description}
            </p:column>
            <p:column headerText="File Type" style="width: 20px">
                #{attachment.fileType}
            </p:column>
        </p:dataTable>
    </p:column>
</p:dataTable>

然后,在我的支持 bean (mybean) 中,我实现onRowSelect/onRowUnselect了从地图中添加/删除我的选择。附件的 id 是键,附件是值。

于 2012-11-02T14:28:31.490 回答