복붙노트

[SPRING] Vaadin : 위젯 세트가로드되지 않습니다.

SPRING

Vaadin : 위젯 세트가로드되지 않습니다.

스프링 기반 애플리케이션에 Vaadin 모듈을 통합 할 수있었습니다. 통합 후 Vaadin의 추가 기능인 gantt-charts 데모를 실행하여 여기에 github에서 찾았습니다. 폴더 안에는 데모 프로젝트가 있습니다. 위젯 세트에 문제가있는 것을 제외하면 모두 괜찮습니다.

문제의 스크린 샷 :

또한 직렬화 할 수없는 오류가 발생합니다.

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.HML :

나는-애드온을 주장         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>

веб.хмл :

 <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>

내가 뭘 잘못하고 있죠? 친절하게 알려주세요. 고마워. :-)

해결법

  1. ==============================

    1.위젯 세트를 컴파일하려면 mvn 새로 설치를 실행하십시오. 명령 줄을 사용하고 싶지 않으면 proyect, Run As> Maven install에서 마우스 오른쪽 버튼을 클릭하십시오.

    위젯 세트를 컴파일하려면 mvn 새로 설치를 실행하십시오. 명령 줄을 사용하고 싶지 않으면 proyect, Run As> Maven install에서 마우스 오른쪽 버튼을 클릭하십시오.

    Eclipse에서 widgetset을 컴파일 할 수도 있습니다. widgetset 파일을 열고 이클립스 메뉴의 "gear"기호를 클릭하십시오.

  2. ==============================

    2.위젯을 컴파일하려면 vaadin 클라이언트 - 컴파일러가 필요합니다. 다음을 pom.xml에 추가하십시오.

    위젯을 컴파일하려면 vaadin 클라이언트 - 컴파일러가 필요합니다. 다음을 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>
    

    주석 첨부 서블릿을 변경하여 해당 파일에서 위젯 세트를 읽으십시오.

    @WebServlet(value = "/testvaadin", asyncSupported = true)
    @VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "com.journaldev.demoset")
    public static class Servlet extends SpringVaadinServlet {
    } 
    

    이를 통해 gantt 차트 프로젝트에 정의 된 widgetset을 정의하고 있습니다.

  3. from https://stackoverflow.com/questions/33783130/vaadin-widget-set-is-not-getting-loaded by cc-by-sa and MIT license