2013-01-02 21 views
0

我從其他帖子瞭解到mainServlet文件必須根據Demo代碼進行修改。 N然後Servlet文件必須在web.xml中指定 但是,在我的web.xml中,我已經有了一個servlet類來表示爲了使用我的Rest服務。invient chart在web.xml中添加on-vaadin指示

問題:我該如何解決這個問題?

以下是我在做什麼:

1:

<servlet> 
     <servlet-name>ServletAdapter</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 


    <servlet-mapping> 
     <servlet-name>ServletAdapter</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

問題是,Invient視窗元件不會被加載。

2:如果我必須在這裏指出servlet文件,那麼我該如何讓Rest服務工作? My Rest服務用於通過auth-constrain進行安全登錄。

<servlet> 
    <servlet-name>VaadinApplication</servlet-name> 
    <servlet-class>suricate.vaadin.MyApplicationServlet</servlet-class> 
    <init-param> 
     <param-name>application</param-name> 
     <param-value>suricate.vaadin.MyApplication</param-value> 
    </init-param> 
    <init-param> 
     <param-name>widgetset</param-name> 
     <param-value>com.example.myapp.widgetset.MyAppWidgetSet</param-value> 
    </init-param> 
</servlet> 

我希望有人能幫我解決這個問題。首先十分感謝。

回答

0

您可以覆蓋ApplicationServlet類中的writeAjaxPageHtmlVaadinScripts方法,並注入所需的靜態圖表js和css文件。

這是我所做的。

public class TogetherApplicationServlet extends ApplicationServlet { 

    @Override 
    protected void writeAjaxPageHtmlVaadinScripts(Window window, 
      String themeName, Application application, BufferedWriter page, 
      String appUrl, String themeUri, String appId, 
      HttpServletRequest request) throws ServletException, IOException { 

     page.write("<script type=\"text/javascript\" language=\"javascript\" src=\"" 
       + appUrl 
       + "/modules/core/jquery/jquery-1.4.4.min.js\"></script>\n"); 
     page.write("<script type=\"text/javascript\" language=\"javascript\" src=\"" 
       + appUrl + "/modules/core/js/highcharts.js\"></script>\n"); 
     page.write("<script type=\"text/javascript\" language=\"javascript\" src=\"" 
       + appUrl 
       + "/modules/core/js/modules/exporting.js\"></script>\n"); 

     super.writeAjaxPageHtmlVaadinScripts(window, themeName, application, 
       page, appUrl, themeUri, appId, request); 
    } 

} 

您將不得不修改您的suricate.vaadin.MyApplicationServlet,就像我上面所做的那樣。確保包含正確的路徑到靜態圖表js和css文件。