GWT FileUpload 是作为一个小部件出现的,它可以在表单提交期间上传文件(至少我是这么理解的:))我想要做的是让它看起来更好看并摆脱标准的“浏览。 ..“ 按钮。
由于我没有良好的 GWT 经验(也没有 JavaScript),因此我寻找现有的解决方案并找到了一个相当不错的项目 - gwtupload。这很好,但我意识到我很想拥有自己的微型版本(而且,我很好奇它是如何工作的)。所以我浏览了代码并试图提取神奇的部分。我意识到使用了 GWT FileInput,但它没有显示,并且按钮点击被委托给这个 FileInput。在查看gwtupload的源代码后,我尝试提取的代码(仅代表单击的部分)包含这个棘手的elem.click()
JSNI:
class MyUpload extends Composite {
private static native void clickOnInputFile(Element elem) /*-{
elem.click();
}-*/;
public MyUpload() {
final FileUpload upload = new FileUpload();
AbsolutePanel container = new AbsolutePanel();
// container.add(upload);
Button btn = new Button("My Browse..");
btn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
clickOnInputFile(upload.getElement());
}
});
container.add(btn);
initWidget(container);
}
}
但这似乎不起作用:单击“我的浏览..”没有任何效果(以防万一我也尝试使用未注释的container.add(upload)
行运行)。您能否帮助我理解此代码示例中的错误/缺失?
先感谢您。
PS我知道我必须把它放在FormPanel上,我知道其余的关于如何在Servlet中执行实际的提交/处理;我唯一想做的就是这种装饰。