gpt4 book ai didi

java - 用于添加图像的 Wicket 拖放功能

转载 作者:行者123 更新时间:2023-12-04 06:27:48 25 4
gpt4 key购买 nike

我正在制作一个 wicket 应用程序,它可以管理 Cashdesk 应用程序的一些选项。选项之一是更改 selected 的图像。 产品 .

选择此选项时,用户(管理员)可以从数据库 (SQL) 中已经存在的图像中进行选择,或者如果所需的图像不存在,则添加新图像。
Don't mention the test names and awesome images (it's still in test-fase)不要提及测试名称和令人敬畏的图像(它仍在测试阶段)

我更喜欢看到通过拖放实现的图像添加
html5 demo [dnd-upload]
(从桌面进入浏览器)

我目前正在使用 Wicket-6.2.0 wicket-dnd 0.5.0 而且我似乎无法正常工作!我能找到的所有示例都来自 wicket 2.x 或更低版本。

在 Wicket-6.2 中可以使用拖放,但我该如何实现呢?

好像有一些DraggableBehavior在 Wicket 口?欢迎任何帮助!

[更新]

升级到 wicket-dnd 0.6

最佳答案

根据您的代码,我编写了自定义 Ajax 行为。然而,我简化了它,它对我有用,而不需要拖拽破解。

AbstractFileDropAjaxBehavior.java

public abstract class AbstractFileDropAjaxBehavior extends AbstractDefaultAjaxBehavior
{

@Override
protected void respond(final AjaxRequestTarget target)
{
RequestCycle requestCycle = RequestCycle.get();

StringValue data = requestCycle.getRequest().getRequestParameters().getParameterValue("data");
String[] base64Data = data.toString().split(";");
String fileName = base64Data[0].substring(base64Data[0].indexOf(':') + 1, base64Data[0].length());
String dataType = base64Data[1].substring(base64Data[1].indexOf(':') + 1, base64Data[1].length());
String binaryData = base64Data[2].substring(base64Data[2].indexOf(',') + 1, base64Data[2].length());
byte[] rawData = DatatypeConverter.parseBase64Binary(binaryData);

processFile(fileName, dataType, rawData);
}

@Override
protected void onComponentTag(ComponentTag tag) {
tag.put("my:dropcontainer.callback", getCallbackUrl().toString());

tag.put("ondragover", "return false;");
tag.put("ondrop", "return AbstractFileDropAjaxBehavior_upload(event, '#" + tag.getId() + "');");
tag.put("ondragenter", "$('#" + tag.getId() + "').addClass('dropover')");
tag.put("ondragleave", "$('#" + tag.getId() + "').removeClass('dropover')");
}

@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);

response.render(OnDomReadyHeaderItem.forScript("jQuery.event.props.push('dataTransfer');"));

response.render(JavaScriptContentHeaderItem.forScript("function AbstractFileDropAjaxBehavior_upload(e, selector) {\n" +
" var files = e.dataTransfer.files;\n" +
" \n" +
" $.each(files, function(i, file) {\n" +
" var reader = new FileReader();\n" +
" \n" +
" reader.onload = function(input) {\n" +
" var fileName = \"fileName:\" + file.name + \";\";\n" +
" var base64data = input.target.result;\n" +
" \n" +
" Wicket.Ajax.post({\n" +
" \"u\": $(selector).attr('my:dropcontainer.callback'),\n" +
" \"ep\": {\n" +
" \"data\" : fileName + base64data,\n" +
" },\n" +
" });\n" +
" \n" +
" };\n" +
"\n" +
" reader.readAsDataURL(file);\n" +
" });\n" +
" \n" +
" $(selector).removeClass('dropover');\n" +
" \n" +
" return false; \n" +
"}\n", "AbstractFileDropAjaxBehavior-script"));
}

protected abstract void processFile(String fileName, String dataType, byte[] rawData);

}

关于java - 用于添加图像的 Wicket 拖放功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com