我能够将Vaadin模块集成到基于Spring的应用程序中。在集成之后,我想运行一个gantt-charts的演示,这是Vaadin的一个附加组件,并在github here上找到它。在文件夹中,有一个演示项目。一切都很好,除了我有widgetset的问题。
问题的屏幕截图:
此外,我收到一个不可序列化的错误:
Nov 18, 2015 3:16:48 PM org.apache.catalina.session.StandardManager startInternal
SEVERE: Exception loading sessions from persistent storage
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.journaldev.spring.Vaadin.Util$5
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924)
UI代码:
@Theme("demo")
@SpringUI
@SuppressWarnings("serial")
public class MyVaadinUI extends UI {
@WebServlet(value = "/testvaadin", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "org.tltv.gantt.demo.DemoWidgetSet")
public static class Servlet extends SpringVaadinServlet {
}
// Code for gaant-chart taken from demo, code too big and not important //for error
// Pastebin link : http://pastebin.com/mi1ZhH30
}
POM.xml:
vaadin-插件 http://maven.vaadin.com/vaadin-addons
<!--- Vaadin dependency -->
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-themes</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiled</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-push</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>org.tltv.gantt</groupId>
<artifactId>gantt-addon</artifactId>
<version>0.9.0</version>
</dependency>
web.xml:
<servlet-mapping>
<servlet-name>vaadin-spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>cometd</servlet-name>
<servlet-class>org.cometd.server.CometDServlet</servlet-class>
<init-param>
<param-name>timeout</param-name>
<param-value>300000</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
<async-supported>true</async-supported>
</servlet>
我做错了什么?请告诉我。非常感谢。 : - )
答案 0 :(得分:0)
尝试运行 mvn clean install 来编译widgetset。如果您不想使用命令行,请右键单击您的项目,运行方式&gt; Maven安装。
您还可以在eclipse中编译您的widgetset。打开您的widgetset文件,然后单击eclipse菜单中的“gear”符号。
答案 1 :(得分:0)
您需要vaadin客户端编译器才能编译您的widgetset。将以下内容添加到您的pom.xml
:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiler</artifactId>
<version>${vaadin.version}</version>
<scope>provided</scope>
</dependency>
运行mvn vaadin:compile
来编译客户端widgetset。
编辑:在您的构建路径中还有一个名为com.journaldev.demoset.gwt.xml
的文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module>
<inherits name="com.vaadin.DefaultWidgetSet" />
<add-linker name="xsiframe" />
<inherits name="org.tltv.gantt.WidgetSet" />
</module>
并更改带注释的servlet以从该文件中读取widgetset。
@WebServlet(value = "/testvaadin", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "com.journaldev.demoset")
public static class Servlet extends SpringVaadinServlet {
}
这样,您就可以定义自己的widgetset,其中包括甘特图项目中定义的widgetset。