如何在datatable中使用PrimeFaces p:droppable?

6

业务需要对物品进行分类。最好的想法似乎是将物品从一个列表中拖放到类别列表中。类别数量可以变化,因此使用p:dataTable。发送Ajax请求,但在dataTable内部未调用onDrop方法。当删除dataTable和列并静态地拥有outputpanel时,是否会调用onDrop?

如何最好地将物品拖放到动态更改的类别中?

        <h:form prependId="false">
            <h:panelGrid columns="2">
                <p:dataTable id="itemstable" value="#{categoryBean.items}" var="item">
                    <p:column>
                        <p:outputPanel id="itemrow">
                            <h:outputText value="#{item}"></h:outputText>
                        </p:outputPanel>
                        <p:draggable for="itemrow"></p:draggable>
                    </p:column>
                </p:dataTable>

                <p:dataTable value="#{categoryBean.categories}" var="cat">
                    <p:column>
                        <p:outputPanel id="cats1">
                            <h:outputText value="category1"></h:outputText>
                        </p:outputPanel>
                        <p:droppable for="cats1"
                                     dropListener="#{categoryBean.onDrop}"
                                     tolerance="pointer"
                                     activeStyleClass="slotActive"
                                     datasource="itemstable">
                        </p:droppable>
                    </p:column>
                </p:dataTable>
            </h:panelGrid>
        </h:form>
1个回答

5

PrimeFaces中存在一个bug,当<p:droppable>嵌套在任何数据重复元素中时,dropListener不会被调用。我还尝试使用Facelets repeat标记<ui:repeat>,但与拖动到<p:dataTable>一样,dropListener未被调用。

在PrimeFaces展示中,所有的拖放示例都有静态的可接受区域。
PrimeFaces ShowCase


不再是这种情况了。通过从单元格拖放,我已经解决了它。 - Thomas
@Thomas6767 很好!你能说一下这个问题在哪个PrimeFaces版本中得到了修复吗,以供参考。 - Mark
1
适用于Primefaces 5.1。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接