有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Wicket DND下拉式顶部/底部带桌子

使用wicket dnd,是否可以对HTML表使用dropTop()/dropBottom()?如果是,选择器应该是什么

我有一个通过ListView创建的HTML表,并成功地使用了dropCentre("tr"),但这是唯一一个看起来有效的drop选项。理想情况下,我希望使用dropTopAndBottom()并查看表行之间的水平分隔符,该分隔符指示放置目标

更新: 以下是相关代码,为简洁起见进行了简化。该表每行有一个标签,并添加到表单中

    // Container class for Wicket DND
    final WebMarkupContainer dataWrapper = new WebMarkupContainer("dataWrapper");
    dataWrapper.add(new WebTheme());

    final ListView<BinaryData> data = new ListView<BinaryData>("data", list) {

        @Override
        protected void populateItem(final ListItem<BinaryData> item) {
            final BinaryData data = item.getModelObject();
            item.add(new Label("label", data.getLabel()));
        }

        @Override
        protected ListItem<BinaryData> newItem(final int index, final IModel<BinaryData> itemModel) {
            final ListItem<BinaryData> item = super.newItem(index, itemModel);
            item.setOutputMarkupId(true);
            return item;
        }
    };

    dataWrapper.add(data);
    dataWrapper.add(new DragSource(Operation.MOVE) {

        @Override
        public void onAfterDrop(final AjaxRequestTarget target, final Transfer transfer) {
        }
    }.drag("tr"));

    dataWrapper.add(new DropTarget(Operation.MOVE) {

        @Override
        public void onDrop(final AjaxRequestTarget ajaxTarget, final Transfer transfer, final Location location) {

        }
    }.dropTopAndBottom("tr"));

    form.add(dataWrapper);

以及标记:

<div wicket:id="dataWrapper">
    <table>
        <tbody>
            <tr wicket:id="data">
                <td wicket:id="label"></td>
            </tr>
        </tbody>
    </table>
</div>

我使用的是Wicket DND 0.6.0和Wicket 6.6.0。当我使用此代码拖动一行时,会在拖动指示器中显示红十字图标


共 (2) 个答案

  1. # 1 楼答案

    wicket dnd使用标准css选择器确定放置位置

    以下是wicket dnd示例中的修改表格示例:

    table.add(new DropTarget(Operation.MOVE)
    {
        @Override
        public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location)
                throws Reject
            // something was dropped
        {
    }.dropTopAndBottom("tr");
    
  2. # 2 楼答案

    我的问题不是由Wicket DND引起的,而是由标记中对JQuery UI的引用明显冲突引起的(Wicket DND不需要JQuery UI,但我的应用程序的其他组件也有JQuery UI)

    用WiQuery提供的引用替换此选项将不再导致任何问题:

    @Override
    public void renderHead(final IHeaderResponse response) {
        super.renderHead(response);
    
        // Ensure that Wicket's jQuery library is always loaded, so we can invoke our own jQuery calls
        response.render(JavaScriptReferenceHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getJQueryReference()));
        response.render(JavaScriptReferenceHeaderItem.forReference(CoreUIJavaScriptResourceReference.get()));
    }