Vaadin:Widget设置没有加载。

时间:2015-11-18 14:49:26

标签: java spring gwt vaadin

我能够将Vaadin模块集成到基于Spring的应用程序中。在集成之后,我想运行一个gantt-charts的演示,这是Vaadin的一个附加组件,并在github here上找到它。在文件夹中,有一个演示项目。一切都很好,除了我有widgetset的问题。

问题的屏幕截图:

Widget set not loaded

此外,我收到一个不可序列化的错误:

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>

我做错了什么?请告诉我。非常感谢。 : - )

2 个答案:

答案 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。