在 Vaadin Flow + Spring 引导项目上添加 dropzone.js
Adding dropzone.js on Vaadin Flow + Spring Boot project
我想将 dropzone.js 版本 5 添加到我的 Vaadin Flow 12.0.7 & Spring Boot 2.1.3.RELEASE 项目,但没有成功。
我已经尝试了两种在页面上添加 dropzone 的方法:
默认一个,在此处描述:https://www.dropzonejs.com/#usage
并在此处以编程方式描述:https://www.dropzonejs.com/#create-dropzones-programmatically
我已将 dropzone.js 添加到项目中的静态资源:
\src\main\resources\static\frontend\js
并由
导入
@JavaScript("/frontend/js/dropzone.js")
然后我添加了一个新表单,div 在我看来:
@Route
@JavaScript("/frontend/js/dropzone.js")
public class MainView extends VerticalLayout {
private final Div dropZoneDiv;
private boolean dropZoneAttached = false;
private MainView() {
add(new H1("Vaadin Spring Dropzone"));
add(new H2("Default adding method"));
Element form = new Element("form");
form.setAttribute("action", "file/post");
form.setAttribute("class", "dropzone");
form.setAttribute("id", "my-awesome-dropzone");
getElement().appendChild(form);
add(new H2("Create dropzone programmatically"));
dropZoneDiv = new Div();
dropZoneDiv.setId("dzDiv");
add(dropZoneDiv);
}
@Override
protected void onAttach(AttachEvent attachEvent) {
super.onAttach(attachEvent);
if (dropZoneDiv!=null && !dropZoneAttached) {
UI.getCurrent().getPage().executeJavaScript(
"var myDropzone = new Dropzone(\"div#dzDiv\", { url: \"/file/post\"});\n" //+
);
dropZoneAttached = true;
}
}
}
我希望在页面上至少看到一个 dropzone,但实际上 div 和我附加 dropzone 的表单在 Chrome 或 Firefox 中是空的。
感谢我的朋友和同事,我得到了答案。
这是可行的解决方案:
@Route
@JavaScript("/frontend/js/dropzone.js")
@StyleSheet("/frontend/js/dropzone.css")
public class MainView extends VerticalLayout {
private MainView() {
add(new H1("Vaadin Spring Dropzone"));
add(new H2("Default adding method"));
Element form = new Element("form");
form.setAttribute("action", "uploadwsdl");
form.setAttribute("class", "dropzone dz-clickable");
form.setAttribute("id", "wsdlUpload");
getElement().appendChild(form);
}
@Override
protected void onAttach(AttachEvent attachEvent) {
super.onAttach(attachEvent);
UI.getCurrent().getPage().executeJavaScript("Dropzone._autoDiscoverFunction()");
}
}
我想将 dropzone.js 版本 5 添加到我的 Vaadin Flow 12.0.7 & Spring Boot 2.1.3.RELEASE 项目,但没有成功。
我已经尝试了两种在页面上添加 dropzone 的方法: 默认一个,在此处描述:https://www.dropzonejs.com/#usage 并在此处以编程方式描述:https://www.dropzonejs.com/#create-dropzones-programmatically
我已将 dropzone.js 添加到项目中的静态资源:
\src\main\resources\static\frontend\js
并由
导入@JavaScript("/frontend/js/dropzone.js")
然后我添加了一个新表单,div 在我看来:
@Route
@JavaScript("/frontend/js/dropzone.js")
public class MainView extends VerticalLayout {
private final Div dropZoneDiv;
private boolean dropZoneAttached = false;
private MainView() {
add(new H1("Vaadin Spring Dropzone"));
add(new H2("Default adding method"));
Element form = new Element("form");
form.setAttribute("action", "file/post");
form.setAttribute("class", "dropzone");
form.setAttribute("id", "my-awesome-dropzone");
getElement().appendChild(form);
add(new H2("Create dropzone programmatically"));
dropZoneDiv = new Div();
dropZoneDiv.setId("dzDiv");
add(dropZoneDiv);
}
@Override
protected void onAttach(AttachEvent attachEvent) {
super.onAttach(attachEvent);
if (dropZoneDiv!=null && !dropZoneAttached) {
UI.getCurrent().getPage().executeJavaScript(
"var myDropzone = new Dropzone(\"div#dzDiv\", { url: \"/file/post\"});\n" //+
);
dropZoneAttached = true;
}
}
}
我希望在页面上至少看到一个 dropzone,但实际上 div 和我附加 dropzone 的表单在 Chrome 或 Firefox 中是空的。
感谢我的朋友和同事,我得到了答案。
这是可行的解决方案:
@Route
@JavaScript("/frontend/js/dropzone.js")
@StyleSheet("/frontend/js/dropzone.css")
public class MainView extends VerticalLayout {
private MainView() {
add(new H1("Vaadin Spring Dropzone"));
add(new H2("Default adding method"));
Element form = new Element("form");
form.setAttribute("action", "uploadwsdl");
form.setAttribute("class", "dropzone dz-clickable");
form.setAttribute("id", "wsdlUpload");
getElement().appendChild(form);
}
@Override
protected void onAttach(AttachEvent attachEvent) {
super.onAttach(attachEvent);
UI.getCurrent().getPage().executeJavaScript("Dropzone._autoDiscoverFunction()");
}
}