GWT, why CellTable doesn't show Image when running in Eclipse?
我有密码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ClickableTextCell imageCell = new ClickableTextCell() { @Override public void render(Context context, SafeHtml data, SafeHtmlBuilder sb) { if (data != null) { String imagePath ="contact.jpg"; //sb.appendEscaped(imagePath); sb.appendHtmlConstant("<img width="20" src="" + imagePath +"">"); } } }; Column<List<String>,String> imageColumn = new Column<List<String>,String>(imageCell) { @Override public String getValue(List<String> object) { return""; } }; imageColumn.setFieldUpdater(new FieldUpdater<List<String>, String>() { @Override public void update(int index, List<String> object, String value) { //Window.alert("You clicked" + object.get(index)); } }); table.addColumn(imageColumn, columnName); |
但在 Eclipse 中运行时,它不显示图像。 Web 服务器收到此错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Request headers Host: 127.0.0.1:8888 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://127.0.0.1:8888/abc.html?gwt.codesvr=127.0.0.1:9997 Cookie: MYCOOKIE=htzjk7g2pva9; JSESSIONID=1xjqdxl3kuuxw; PRODUCTSERVICECOOKIE=1xjqdxl3kuuxw Connection: keep-alive Response headers Set-Cookie: PRODUCTSERVICECOOKIE=1xjqdxl3kuuxw;Path=/ Content-Length: 1397 Content-Type: text/html; charset=iso-8859-1 [WARN] 404 - GET /contact.jpg (127.0.0.1) 1397 bytes Request headers Host: 127.0.0.1:8888 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-US,en;q=0.5 |
另外,第二个问题是把图像放在哪里,这样当我们部署最终的网络应用程序时,我们就可以轻松地管理图像。我实际上对 Eclipse 中的文件夹结构感到困惑。
在 MyProject 中,我有:
war \\\\我的项目
war \\\\WEB-INF
war \\\\MyProjet.css
war \\\\MyProjet.html
但在 MyProject 我也有包含所有 java 文件的文件夹 src
src\\\\myproject\\\\client\\\\(在客户端文件夹中,我放了"contact.jpg"
src\\\\myproject\\\\服务器
我不确定我是否将contact.jpg 放在了正确的文件夹中。另外,当我们部署我们的 webapp 时,Eclipse 会将所有图像文件迁移到这个文件夹中:-->
war \\\\myproject
如果您将图像文件放在
如果您将图像文件放在
要么:
-
将您的图像放在公共路径中。公共路径中的静态资源(例如图像)会自动复制到编译器输出目录中。要在客户端代码中引用它们,您必须使它们相对于
GWT.getModuleBaseURL() 。
或
-
在
ClientBundle 中使用ImageResource 并使用:-
imageResource.getSafeUri().asString() 链,获取其已解析(安全)URI ;或 -
AbstractImagePrototype.create(imageResource).getHTML() 代表整个<img> 片段。
-
我已经排除了
另外,如果你想用一个图标来装饰一个单元格,看看