我有一个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/

10-10 19:28