我在文件夹src/main/resources/CustomWidgetset
中有一个带有自定义widgetset的Maven Vaadin项目。但是,当我执行mvn -Pcompile-widgetset package
时,widgetset以某种方式结束于src/main/webapp/VAADIN/widgetsets/CustomWidgetset.CustomWidgetset
(CustomWidgetset两次,中间带有“。”)然后无法找到它:
Information: Requested resource [VAADIN/widgetsets/CustomWidgetset/CustomWidgetset.nocache.js] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.
你能告诉我,完全我必须把我的widgetset放到100%被识别,编译并在以后找到?
解决方案 我发现,我有一个错误的参数名称,它现在通过替换
起作用<param-name>org.mypackage.CustomWidgetset</param-name>
与
<param-name>widgetset</param-name>
虽然我不明白为什么没有抛出错误。
P.S。
这还不够,我还必须将src/main/resources/CustomWidgetset/CustomWidgetset.gwt.xml
移到src/main/resources/CustomWidgetset.gwt.xml
。显然,小部件集不应该有自己的文件夹,因此所有小部件集都直接驻留在包中。
答案 0 :(得分:1)
遵循Vaadin的标准Maven原型,widgetset的正确位置是编译它时结束的文件夹 - src/main/webapp/VAADIN/widgetsets
。我不知道你为什么在src/main/resources
中拥有它。
编译的widgetset的名称取决于GWT模块描述符的名称。这是项目中某处的.gwt.xml文件。它应该在您的情况下命名为CustomWidgetset.gwt.xml
,但出于某种原因它可能是CustomWidgetset.CustomWidgetset.gwt.xml
吗?
接下来,Vaadin试图找到已编译的widgetset。它将在servlet描述符中查找一个参数,以查看它应该使用哪个widgetset。
如果您使用Servlet API 2.X,那么您将拥有webapp/WEB-INF
下的web.xml文件,并且您将找到该文件
<init-param>
<param-name>widgetset</param-name>
<param-value>com.example.CustomWidgetset.CustomWidgetset</param-value>
</init-param>
如果您使用Servlet API 3.0,那么您的UI类将具有如下所示的servlet定义。
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = AppUI.class, widgetset = "com.example.CustomWidgetset.CustomWidgetset")
public static class Servlet extends VaadinServlet {
}
要么是2.X或3.0,治愈方法是相同的 - 从中移除额外的.CustomWidgetset
。