2012-10-03 35 views
3

我有一个使用Vaadin portlet的Liferay项目。Vaadin,在哪里放置图像?

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

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

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

UPDATE

不,我试试这个。

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 

回答

4

因此,您的portlet正在寻找/html/VAADIN/themes/liferay/LifeRayVaadin-portlet/icons/add.png中的图标。没有任何路径查找该文件中VAADIN/themes/yourtheme/路径

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

ThemeResource,从而../../将让你(在这种情况下),以/VAADIN/

你可以VAADIN下创建一个目录icons和调用。我个人决不会硬编码项目中的主题名称或portlet名称,因为当它更改时,必须通过每个参考并更改它们。

+0

我在Liferay项目中没有'VAADIN'目录。 –

+0

你确定吗?我刚刚下载了Liferay 6.1,并在liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/html /中找到了VAADIN目录。由于它包含Vaadin portlet的组件和主题,因此它是必需的。 – miq

+0

对不起,我是盲人。 –

1

你可以把你的图片在$ portlet的名称/文档根/图标目录,并使用路径

/$PORTLET-NAME$/icons/add.png 

打电话给他们在你的情况下,它将是

Button search = new Button("Search"); 

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

'$ PORLTET-NAME $'它是项目的名称? –

+0

是的,您也可以在将它部署到应用程序服务器上时将其称为文件夹名称。例如我有Liferay tomcat包,我的portlet名称是test-portlet。当我在Tomcat/webapps /中进行交叉检查时,我将它作为“test-portlet”,并且可以将图像作为/test-portlet/icons/add.png访问。 – Sharana

+0

我这样做,但没有什么heppens。我在Tomcat中的portlet目录中看到图标目录,但没有在按钮中看到它。我可以在哪里失败? –