我在eclipse
中使用maven创建了一个vaadin Web应用程序。特别是我使用了book of vaadin (20.3.4)中描述的原型vaadin-archetype-touchkit
。如果不对默认生成的代码进行任何更改,我已使用目标clean package
的maven运行它。然后我编译了Widgetset
。当我尝试在Tomcat 7上运行它时,我收到来自网页的奇怪消息:
Failed to load the WidgetSet:
<WidgetSet Path>.DefaultWidgetSet.nocache.js
在控制台上,我也看到了错误消息:
INFO: Requested resource [/VAADIN/themes/reindeer/styles.css] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.
INFO: Requested resource [/VAADIN/widgetsets/com.vaadin.DefaultWidgetSet/com.vaadin.DefaultWidgetSet.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.
INFO: Requested resource [/VAADIN/themes/reindeer/styles.css] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.
虽然我已经在教程中读到web.xml
中没有必要,但是maven还没有创建vaadin 7
文件。我已阅读similar question,建议在web.xml
文件中进行调整。我是否应该推断我还要手动创建web.xml
文件?
我也觉得很奇怪,当我为典型的vaadin 7应用程序尝试使用原型的相同过程时,它运行正常。由于我必须开发一个触摸套件应用程序,我将不胜感激任何建议 - 想法与我原始尝试中可能遗漏的内容相吻合。
答案 0 :(得分:4)
如果您使用servlet 3.0配置(按照4.8.3. WEB Servlet Class所述注释您的servlet),则不再需要
通常以这种方式配置您的Vaadin 3.0 Servlet配置:
public class MyUI extends UI {
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyUI.class)
public static class Servlet extends VaadinServlet {
}
@Override
protected void init(VaadinRequest request) {
//your init stuff here
}
}
使用 @VaadinServletConfiguration 作为设置vaadin相关参数的快捷方式。
现在,如果您的项目中没有vaadin插件(因此您正在使用默认的widgetset),那就是它,不再需要其他工作。
相反,如果您使用自定义插件,则必须通过以这种方式添加widgetset参数来指定要在@VaadinServletConfiguration
中使用的窗口小部件集
public class MyUI extends UI {
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(widgetset="com.bla.bla.MyWidgetSet",productionMode = false, ui = MyUI.class)
public static class Servlet extends VaadinServlet {
}
@Override
protected void init(VaadinRequest request) {
//your init stuff here
}
}
否则您必须像往常一样手动创建web.xml ...
说到maven,我认为你只需要运行 mvn clean package ,在包阶段,maven-vaadin-plugin会自动编译你的widgetset。
答案 1 :(得分:3)
对我来说,将以下内容添加到pom.xml
有帮助:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiled</artifactId>
<version>${vaadin.version}</version>
</dependency>
答案 2 :(得分:0)
这是项目根目录中的自述文件
要编译整个项目,请运行&#34; mvn install&#34;。 要运行该应用程序,请运行&#34; mvn jetty:run&#34;并打开http://localhost:8080/。
要开发主题,只需更新相关主题文件并重新加载应用程序即可。 预编译主题会在运行时消除自动主题更新 - 有关详细信息,请参阅下文。
调试客户端代码 - 运行&#34; mvn vaadin:run-codeserver&#34;在应用程序运行时在单独的控制台上 - 在应用程序的调试窗口中激活超级开发模式
生成可部署的生产模式WAR: - 在servlet类配置中将productionMode更改为true(嵌套在UI类中) - 运行&#34; mvn clean vaadin:compile-theme package&#34; - 请参阅下面的详细信息。跑步&#34; mvn clean&#34;删除预编译的主题。 - 用&#34; mvn jetty:run-war
进行测试按照说明操作,您将获得正确的页面:)