Vaadin,图片应该放在哪里?

3

我有一个使用Vaadin门户的Liferay项目。

我想为我的按钮添加图标。

  Button search = new Button("Search");
  search.setIcon(new ThemeResource("img/silk/add.png"));

但是我不知道该把它放在哪里?现在我把它放在docroot目录中。

更新

现在我尝试这个。

  Button search = new Button("Search");
  search.setIcon(new ThemeResource("LifeRayVaadin-portlet/icons/add.png"));

但是当我在控制台重新部署项目时,会得到以下错误信息:

09:34:05,773 WARN  [404_jsp:109] /html/VAADIN/themes/liferay/LifeRayVaadin-portlet/icons/add.png
2个回答

4

所以你的Portlet正在寻找位于/html/VAADIN/themes/liferay/LifeRayVaadin-portlet/icons/add.png的图标。

你可以在VAADIN下创建一个名为icons的目录,并调用:

search.setIcon(new ThemeResource("../../icons/add.png"));

ThemeResource 没有任何路径时将在 VAADIN/themes/yourtheme/ 路径中查找文件,因此 (在这种情况下) ../../ 将使你到达 /VAADIN/。我个人不会在项目中硬编码主题或 portlet 的名称,因为当它们更改时,您必须浏览每个引用并更改它们。


我在 Liferay 项目中没有 VAADIN 目录。 - Kliver Max
你确定吗?我刚刚下载了 Liferay 6.1,并在 liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/html/ 中找到了 VAADIN 目录。它绝对是必需的,因为它包含 Vaadin portlets 的 widgetsets 和主题。 - miq

1
您可以将图片放在 $PORTLET-NAME/docroot/icons 目录中,并使用路径调用它们。
/$PORTLET-NAME$/icons/add.png

在您的情况下,它将是

 Button search = new Button("Search");

  search.setIcon(new ThemeResource("/$PORLTET-NAME$/icons/add.png"));

$PORLTET-NAME$ 是项目的名称吗? - Kliver Max
是的,当部署到应用服务器上时,您也可以将其称为文件夹名称。例如,我有Liferay Tomcat捆绑包,我的Portlet名称为test-portlet。当我在Tomcat / webapps /中进行交叉检查时,我将其命名为“test-portlet”,并且我可以访问图像作为/ test-portlet / icons / add.png。 - Sharana
我做了,但没有任何反应。我在Tomcat的portlet目录中看到了图标目录,但在按钮中没有看到它。我哪里做错了? - Kliver Max
据我所知,应该是相对URL。你能否在图片路径的开头添加一个斜杠(“/”)?目前它是search.setIcon(new ThemeResource("LifeRayVaadin-portlet/icons/add.png"));但它应该是search.setIcon(new ThemeResource("/LifeRayVaadin-portlet/icons/add.png")); - Sharana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接