2016-11-10 57 views
1

我需要將jquery添加到我的vaadin應用程序的引導頁面。我加入我的自定義ServletVaadin:將自定義JavaScript添加到引導頁面

@Override 
public void sessionInit(SessionInitEvent event) throws ServiceException { 
    event.getSession().addBootstrapListener(new BootstrapListener() { 
     @Override 
     public void modifyBootstrapPage(BootstrapPageResponse response) { 
      //Jquery is necessary for open in new window button 
      String contextPath = event.getRequest().getContextPath(); 
      response.getDocument().head().prependElement("script").attr("type", "text/javascript").attr("src", contextPath + "/VAADIN/js/jquery.min.js"); 
      response.getDocument().head().prependElement("script").attr("type", "text/javascript").attr("src", contextPath + "/VAADIN/js/jquery-ui.js"); 
     } 

     @Override 
     public void modifyBootstrapFragment(BootstrapFragmentResponse response) { 
     } 
    }); 
} 

此代碼有時拋出event.getRequest().getContextPath();

Caused by: java.lang.NullPointerException 
at org.apache.catalina.connector.Request.getServletContext(Request.java:1598) ~[catalina.jar:8.0.24] 
at org.apache.catalina.connector.Request.getContextPath(Request.java:1915) ~[catalina.jar:8.0.24] 
at org.apache.catalina.connector.RequestFacade.getContextPath(RequestFacade.java:783) ~[catalina.jar:8.0.24] 
at javax.servlet.http.HttpServletRequestWrapper.getContextPath(HttpServletRequestWrapper.java:150) ~[servlet-api.jar:?] 
at com.mycompany.MyServlet$1.modifyBootstrapPage(YaanServlet.java:56) ~[web-yaan-ui-base-1.3.39.jar:?] 

什麼是獲得這種情況下的上下文路徑的正確方法一個空指針異常以下?

+0

http://stackoverflow.com/questions/9303534/is-it-possible-to-use -jquery - 內 - 的 - vaadin框架/ 25155182#25155182 – d2k2

回答

3

一個更簡單的方法是使用@JavsScript註釋你的UI類

package com.company.mine; 
@JavaScript({"jquery.min.js","jquery-ui.js"}) 
public class YourUI extends UI 
{ 

} 

然後需要把兩個JavaScript文件到匹配類尤瑞的文件夾中。我使用maven所以它需要在src/main/resources/com/company/mine/jquery.min.js中

相關問題