我有一个Maven Vaadin项目,在文件夹src/main/resources/CustomWidgetset
中带有自定义窗口小部件集。但是,当我执行mvn -Pcompile-widgetset package
时,该小部件集以某种方式以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.
您能告诉我,我必须在哪里放置我的小部件集,以便它在以后能100%被识别,编译和找到?
解
我发现,我输入了错误的参数名称,现在通过替换它可以正常工作
<param-name>org.mypackage.CustomWidgetset</param-name>
与
<param-name>widgetset</param-name>
虽然我不明白为什么没有抛出错误。
附言
那还不够,我还必须将
src/main/resources/CustomWidgetset/CustomWidgetset.gwt.xml
移到src/main/resources/CustomWidgetset.gwt.xml
。显然,不希望窗口小部件集拥有自己的文件夹,因此所有窗口小部件集都直接驻留在程序包中。 最佳答案
遵循Vaadin的标准Maven原型,小部件集的正确位置是编译时集的最终文件夹-src/main/webapp/VAADIN/widgetsets
。我不知道您为什么在src/main/resources
中使用它。
编译后的小部件集的名称将取决于您的GWT模块描述符的名称。那是项目中某个地方的.gwt.xml文件。在您的情况下,应将其命名为CustomWidgetset.gwt.xml
,但是出于某种原因,它可能是CustomWidgetset.CustomWidgetset.gwt.xml
吗?
然后到下一个地方,Vaadin尝试找到已编译的窗口小部件集。它将在servlet描述符中寻找参数,以查看应使用的窗口小部件集。
如果您使用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
。关于java - Vaadin将我的小部件集的名称加倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21912078/