3

我已经使用 maven in 创建了一个 vaadin Web 应用程序eclipse。特别是,我使用了vaadin (20.3.4) 书中vaadin-archetype-touchkit描述的原型。在没有对默认生成的代码进行任何更改的情况下,我使用 maven 和目标运行它。然后我编译了. 当我尝试在 Tomcat 7 上运行它时,我收到来自网页的奇怪消息:clean packageWidgetset

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.

它让我感到震惊,maven 没有创建web.xml文件,尽管我在教程中读到它在vaadin 7. 我已经阅读了类似的问题,建议web.xml应该对文件进行调整。我是否应该推断我还必须web.xml手动创建文件?

我也觉得奇怪,当我为典型的 vaadin 7 应用程序的原型尝试相同的过程时,它运行正常。由于我必须开发一个 touchkit 应用程序,我将不胜感激任何建议想法,除了我最初的尝试中可能缺少的东西。

4

3 回答 3

4

当您使用 servlet 3.0 配置时才不再需要 web.xml (如4.8.3.WEB Servlet 类所述注释您的 servlet )

通常你会以这种方式配置你的 Vaadin 3.0 Servlet Config:

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 插件(所以您使用的是默认的小部件集),就是这样,不需要更多的工作。

相反,如果您使用自定义插件,则必须@VaadinServletConfiguration通过以这种方式添加 widgetset 参数来指定要使用的小部件集

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并且在 package 阶段,maven-vaadin-plugin 将自动编译您的 widgetset。

于 2013-09-16T09:41:19.617 回答
3

对我来说,添加以下内容pom.xml有助于:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-client-compiled</artifactId>
        <version>${vaadin.version}</version>
    </dependency>
于 2015-03-10T17:08:55.923 回答
0

这是项目根目录中的自述文件

要编译整个项目,请运行“mvn install”。要运行应用程序,请运行“mvn jetty:run”并打开http://localhost:8080/

要开发主题,只需更新相关主题文件并重新加载应用程序。预编译主题消除了运行时的自动主题更新 - 有关更多信息,请参见下文。

调试客户端代码 - 在应用程序运行时在单独的控制台上运行“mvn vaadin:run-codeserver” - 在应用程序的调试窗口中激活超级开发模式

要生成可部署的生产模式 WAR: - 在 servlet 类配置中将 productionMode 更改为 true(嵌套在 UI 类中) - 运行“mvn clean vaadin:compile-theme package” - 请参阅下文了解更多信息。运行“mvn clean”会删除预编译的主题。- 使用“mvn jetty:run-war”进行测试

按照说明进行操作,您将获得正确的页面:)

于 2015-05-30T02:28:38.087 回答