【发布时间】:2022-06-23 18:11:37
【问题描述】:
我在 GWT 上遇到图像加载问题。
在服务器端:
- 我有一个使用“https://github.com/chintanbuch/simplecaptcha”创建和传输验证码图像的 HttpServlet。
在客户端:
- 我通过将新 url 放入 GWT Image 对象来调用此 servlet。
但是,即使我使用的是 localhost,有时图像也不会显示。而且它永远不会触发“onError”,总是“onLoad”。
我应该如何调试它?请帮忙。
tbCaptcha = new TextBox();
imgCaptcha = new Image();
imgCaptcha.addErrorHandler(new ErrorHandler() {
public void onError(ErrorEvent event) {
d.ce("onCaptcha", "onError", System.currentTimeMillis());
onCaptcha.execute();
}
});
imgCaptcha.addLoadHandler(new LoadHandler() {
public void onLoad(LoadEvent event) {
d.cr("onCaptcha", "onLoad", System.currentTimeMillis());
}
});
var login = TGS_LibScaleServletUtils.login();
var newUrl = TGC_CaptchaUtils.newUrl(login.domain, login.port, login.spi);
imgCaptcha.setUrl(newUrl);
是的,我正在创建一个带有随机参数的新 URL,并使用 Image.prefetch,如下所示:
public static String newUrl(CharSequence domain, Integer port, CharSequence spi) {
var newUrlCaptcha = TGS_UrlBuilderUtils.https()
.domain(domain).port(port).directory(spi)
.fileOrServlet(TGS_SURLUtils.LOC_NAME)
.parameter(TGS_SURLUtils.PARAM_NAME, TGS_CaptchaUtils.SERVLET_REFRESH())
.parameterRandom("r", 10).toString();
Image.prefetch(newUrlCaptcha);
return newUrlCaptcha;
}
客户端控制台:
查看github中的api代码github
【问题讨论】:
-
能否附上控制台截图。有错误吗?
-
在 servlet 端,没有错误...我添加了客户端控制台日志。仅加载。我需要单击刷新按钮几次,以创建问题。但有时它甚至在初始渲染时也会发生。
-
从 Dark Dark Theme 更改为 Light 浏览器主题?因为验证码图像具有与黑色背景匹配的黑色文本。
-
@RaviSamani 有趣的是,我无法在浅色主题中创建相同的问题....我正在努力....嗯也许正如你所说的那样,我在库中有一个透明设置用于capthca,我随机提供...我会注意的。谢谢
-
@RaviSamani 是的,我发现我使用的是随机背景,包括透明背景。从列表中删除它解决了这个问题。