Vaadin带有Maven和Spring Boot的自定义组件/小部件

我对vaadin比较陌生,并从Spring Boot" title="Spring Boot">Spring Boot应用程序和vaadin spring boot插件开始。一切正常,直到我尝试创建自己的组件/小部件为止。

不幸的是,我没有找到任何“官方”示例/文档来说明如何在Spring

Boot应用程序中设置自定义组件,因此我不得不在网上搜索以了解如何在Maven中设置其他插件来编译代码。客户端小部件。据我从日志输出中可以看出,这些组件的编译工作正常,但是当我尝试访问网页上的这些组件时,出现错误:

Widgetset 'com.vaadin.DefaultWidgetSet' does not contain implementation for net.gtidev.test.components.MyComponent. Check its component connector's @Connect mapping, widgetsets GWT module description file and re-compile your widgetset. [...]

这是小部件编译器日志:

[INFO] Using com.vaadin:vaadin-client-compiler version 7.6.4

[ERROR] Mar 22, 2016 10:22:43 AM java.util.prefs.WindowsPreferences <init>

[ERROR] WARNUNG: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

[INFO] Compiling module net.gtidev.test.components.TestWidgetset

[INFO] Computing all possible rebind results for 'com.vaadin.client.metadata.ConnectorBundleLoader'

[INFO] Rebinding com.vaadin.client.metadata.ConnectorBundleLoader

[INFO] Invoking generator com.vaadin.server.widgetsetutils.ConnectorBundleLoaderFactory

[INFO] Populating eager bundle

. . . . . 250 more lines

[INFO] Computing all possible rebind results for 'com.vaadin.client.ui.dd.VAcceptCriterionFactory'

[INFO] Rebinding com.vaadin.client.ui.dd.VAcceptCriterionFactory

[INFO] Invoking generator com.vaadin.server.widgetsetutils.AcceptCriteriaFactoryGenerator

[INFO] Detecting available criteria ...

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.AcceptAll

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.And

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIs

[INFO] creating mapping for com.vaadin.ui.AbstractSelect.TargetItemIs

[INFO] creating mapping for com.vaadin.ui.AbstractSelect.AcceptItem

[INFO] creating mapping for com.vaadin.ui.Table.TableDropCriterion

[INFO] creating mapping for com.vaadin.ui.Tree.TreeDropCriterion

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.Not

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.Or

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.ServerSideCriterion

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIsTarget

[INFO] creating mapping for com.vaadin.event.dd.acceptcriteria.TargetDetailIs

[INFO] creating mapping for com.vaadin.ui.Tree.TargetInSubtree

[INFO] Done. (0seconds)

[INFO] Compiling 1 permutation

[INFO] Compiling permutation 0...

[INFO] Compile of permutations succeeded

[INFO] Compilation succeeded -- 59,217s

[INFO] Linking into C:\projects\misc\vaadin-boot\target\vaadin-boot-0.0.1-SNAPSHOT\net.gtidev.test.components.TestWidgetset

[INFO] Link succeeded

[INFO] Linking succeeded -- 0,492s

我用于自定义组件的文件是由vaadin 7项目中的eclipse vaadin插件生成的,而我仅为此目的而创建。当我在eclipse中启动此vaadin

7项目时,组件正常工作。然后,我将这些文件复制到我的spring boot maven项目中,在该项目中不再加载自定义组件。

我知道Spring Boot应用程序的引导机制和布局与“经典”

webapps略有不同,除其他外,静态资源不是从webapp文件夹而是从classpath:/

static文件夹加载的。我认为问题的核心与此事实有关,但我不知道该如何解决。

我的插件配置(我尝试使用和不使用注释选项):

<plugin>

<groupId>com.vaadin</groupId>

<artifactId>vaadin-maven-plugin</artifactId>

<version>7.6.4</version>

<configuration>

<strict>true</strict>

<force>true</force>

<!-- Enable during development to speed compiling. -->

<!-- <draftCompile>true</draftCompile>

<style>DETAILED</style> -->

<!-- End development options -->

<!--<webappDirectory>src/main/webapp/VAADIN/widgetsets</webappDirectory>-->

<modules>

<module>net.gtidev.test.components.TestWidgetset</module>

</modules>

</configuration>

<executions>

<execution>

<goals>

<goal>resources</goal>

<goal>compile</goal>

</goals>

</execution>

</executions>

</plugin>

我尝试了不同的Maven插件组合和配置。在一个示例中,还提到了一个Google-GWT插件,但是在代码上运行此插件会产生与vaadin插件相同的日志输出:

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>gwt-maven-plugin</artifactId>

<version>2.5.1</version>

<!--<configuration>-->

<!--<webappDirectory>src/main/webapp/VAADIN/widgetsets</webappDirectory>-->

<!--<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>-->

<!--<runTarget>clean</runTarget>-->

<!--<hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>-->

<!--<noServer>true</noServer>-->

<!--<port>8080</port>-->

<!--<soycDetailed>false</soycDetailed>-->

<!--</configuration>-->

<executions>

<execution>

<goals>

<goal>resources</goal>

<goal>compile</goal>

</goals>

</execution>

</executions>

</plugin>

回答:

要使用自定义客户端扩展,Vaadin插件,您需要将vaadin-maven-

plugin添加到您的项目中。它将扫描您使用的加载项,GWT会为您的项目编译一个包含这些扩展名的新窗口小部件集。

如果您使用start.spring.io创建了项目,则默认情况下,maven插件不在您的项目中。例如,使用此Vaadin +

Spring原型或基于官方servlet的原型创建示例项目,并将vaadin-maven-

plugin相关部分从pom.xml复制到您的项目pom.xml。然后做一个完整的构建,一切都会按预期进行。

以上是 Vaadin带有Maven和Spring Boot的自定义组件/小部件 的全部内容, 来源链接: utcz.com/qa/408330.html

回到顶部