2015-05-02 232 views
2

我已經在這裏問過這樣一個問題,但沒有得到可以解決的答覆。解決這個問題對我來說非常重要。因此,我嘗試使用ExtGWT 2.3.0/GWT 2.5.1開發應用程序,但遇到了瀏覽器中無法看到小部件(GWT和GXT)的問題。我一直試圖解決這個問題超過一週,但不幸的是我失敗了。我已經嘗試過的東西:GWT元素不可見

  • 使用不同的GWT/GXT庫(使用ExtGXT 3.x不能解決問題);
  • 使用Maven web-app/gxt3 + archetypes創建項目;
  • 在Tomacat上部署項目/ GWT下的午餐;
  • 在GWT模塊中使用不同風格(如<inherits name='com.google.gwt.user.theme.standard.Standard'/>);
  • 重寫.css文件;
  • 編譯Maven/GWT編譯器的項目;
  • 清理所有相關臨時目錄(如Windows以及Intellij IDEA)中的緩存文件;
  • 製作Maven的clean install;
  • 使用不同版本的不同瀏覽器(IE 8和11,Chrome,FF 24和36);
  • 嘗試在瀏覽器中使用/不使用GWT開發者插件的午餐應用程序;
  • 瀏覽互聯網尋找解決方案(特別是stackoverflow);

也許我遺漏了,但行動清單非常大。 順便說一句,我記錄的行動,並沒有任何錯誤或任何拋出。如果我在.css中聲明窗口小部件的邊框設置,它們的邊框將變得可見,證明窗口小部件在頁面上。所以,如果有人遇到過這樣的問題,或者只是想提出一些建議,請告訴我。坦率地說,這對我來說非常重要。請看一下項目文件夾結構/設置的截圖。先謝謝你。

的EntryPoint - 類

public class ProjectEntryPoint implements EntryPoint { 
    @Override 
    public void onModuleLoad() { 
     Viewport viewport = new Viewport(); 
     final BorderLayout borderLayout = new BorderLayout(); 

     BorderLayoutData northData = new BorderLayoutData(Style.LayoutRegion.NORTH, 20); 
     northData.setSplit(false); 
     northData.setCollapsible(false); 

     BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER); 
     centerData.setCollapsible(false); 

     BorderLayoutData westData = new BorderLayoutData(Style.LayoutRegion.WEST, 200, 150, 300); 
     westData.setCollapsible(true); 
     westData.setSplit(true); 

     ContentPanel mainPanel = new ContentPanel(); 
     mainPanel.setStyleName("mainPanel"); 
     ContentPanel navPanel = new ContentPanel(); 
     mainPanel.setStyleName("navPanel"); 

     HTML headerHTML = new HTML(); 
     headerHTML.setHTML("<h1>RSS Reader</h1>"); 

     viewport.add(mainPanel, centerData); 
     viewport.add(navPanel, westData); 
     viewport.add(headerHTML, northData); 
     viewport.setLayout(borderLayout); 
     viewport.layout(); 
     RootPanel.get().add(viewport); 
    } 
} 

模塊

<module rename-to='Project'> 
    <inherits name='com.google.gwt.user.User' /> 
    <inherits name='com.extjs.gxt.ui.GXT' /> 
    <inherits name='com.google.gwt.user.theme.standard.Standard'/> 
    <entry-point class='GXT3App.client.ProjectEntryPoint' /> 
    <source path='client' /> 
    <source path='shared' /> 
    <add-linker name="xsiframe" /> 
</module> 

的.html

<html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <link type="text/css" rel="stylesheet" href="gxt-all.css"> 
    <title>Project</title> 
    <script type="text/javascript" language="javascript" src="Project/Project.nocache.js"></script> 
    </head> 
    <body> 
    <!-- OPTIONAL: include this if you want history support --> 
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe> 
    </body> 
</html> 

。CSS

.mainPanel { 
    border: 1px solid black; 
} 

.navPanel { 
    border: 1px solid black; 
} 

folder structure GWT config WAR structure Result on web-page

+0

請勿兩次發佈相同的問題以「獲得關注」。編輯舊的並添加賞金以獲得更多的目光。不要在將來重複提問垃圾網站。 –

+0

我刪除了舊的問題,並通過描述問題以及我爲解決問題所做的更新。這不是爲了吸引注意力,而是要在一個地方獲得關於這個問題的所有信息。我認爲這更清楚簡潔。 – aime

+0

你是否嘗試過除IE之外的其他瀏覽器? –

回答

1

它看起來像缺少樣式的問題 - 請仔細檢查您的主機頁面中引用它的地方是否有可用的gxt-all.css。使用您的瀏覽器的開發者工具,看看它是不是扔404

似乎缺少資源在setup.txt文件步驟1捆綁與GXT 2.3提到:

  1. 在Eclipse中創建谷歌Web應用程序項目的項目。

    將下載中的/ resources文件夾的內容複製到war文件夾中的{foldername}位置。 用您爲war文件夾中的資源創建的文件夾的名稱替換{foldername}。

  2. 將以下樣式表添加到您的主機頁面。

    <link rel="stylesheet" type="text/css" href="{foldername}/css/gxt-all.css" /> 
    
  3. 如果您使用圖表,請將以下腳本添加到您的主機頁面。

  • 將以下條目添加到你項目模塊XML文件。 Eclipse設置(對於其他開發環境應該是類似的)。這些說明假定您有一個現有的項目和啓動配置。

    1. 將gxt.jar添加到項目中。
    2. 添加GXT jar來啓動配置。
  • +0

    我已經以正確答案的形式編寫了我們在上述評論中達成的解決方案,以便爲其他遇到此問題的人找到更容易的方法。 –

    +0

    我明白了,謝謝。我想我已經找到了所有問題的根源。在正常工作的項目中,不僅有'gxt-all.css',而且還有許多圖像,代表了工具按鈕,滾動元素等小部件的元素。事實證明,在我的情況下,只是存在'gxt-all .css'是不夠的。我只有一個問題 - 創建項目時爲什麼所有這些東西都不包含在Web目錄中。更重要的是,我從來沒有見過任何信息,所有這些東西(gxt-css,image-files)都必須參與到GXT下的項目中。 – aime

    +0

    我找到了關於'resources'文件夾的信息。希望這可以解決問題(儘管我希望像你一樣,這一步應該是自動的......)。 –

    0

    這無疑不能得到答案,但你必須在你的代碼一個錯字:

    ContentPanel mainPanel = new ContentPanel(); 
        mainPanel.setStyleName("mainPanel"); 
        ContentPanel navPanel = new ContentPanel(); 
        mainPanel.setStyleName("navPanel"); 
    

    在最後一行(我認爲)應該是

    navPanel.setStyleName("navPanel"); 
    
    +0

    謝謝,但它不會奏效。我在上面的帖子的評論中描述了問題的解決方案。 – aime

    0

    我解決了這個問題。我不會說這是一個優雅的解決方案,但它的工作原理。 正如上面討論的那樣,問題出在沒有.css文件,該文件定義了描述小部件樣式的選擇器(gxt-all.css)。當創建項目要確保相關文件下列文件夾在項目的Web應用程序目錄(在情況下,你使用Maven的web應用程序,原型)介紹:

    • CSS(包含GXT-all.css和GXT-grey.css)
    • 桌面
    • 閃光燈
    • 個圖像
    • 主題

    所有的東西你可以找到在GXT安裝存檔的文件夾資源英寸要使用它,只需將所有文件夾放入項目中,並在host-html中定義到gxt-all.css的路徑。它適用於GXT 2.x.