2012-12-21 19 views
1

我有基於GWTP的gwt應用程序。應用程序支持兩個版本(平板電腦&桌面)並使用不同的小部件庫(sencha gxt和sencha touch)。這些庫在主機頁面中需要不同的css文件。其他css與其他cs相互衝突。我如何在我的主頁中加載不同的CSS文件?GWT:在主機頁面加載不同的css

我已經閱讀了關於gwt mobilewebapp sample,但他們使用單個html頁面和組件的不同實現。

回答

1

通過使用JSP文件作爲css源,您也可以在服務器端執行此操作。 然後,在JSP文件中,根據請求的用戶代理或其他來確定要發送的屬性集合。

另一種選擇是將主機頁面寫爲JSP文件,並且可以根據請求包含適當的CSS文件。
這是一個非常簡單的方法,但是您必須在web.xml中啓用JSP處理器。它還要求你部署的系統有一個Java編譯器,如果你只在Web服務器上安裝JRE,情況就不是這樣。

2

您可以檢查Useragent並決定要傳遞哪個CSS文件。我想推薦使用ClientBundles。這隻提供了CSS樣式需要,並加快了你的頁面。

在您的入口點,你只是決定要提供哪些css文件:

if(useragent == "desktop") { 
    YourStyle.getTheme().getMGWTClientBundle().getDesktopCss().ensureInjected(); 
} else { 
    YourStyle.getTheme().getMGWTClientBundle().getAppCss().ensureInjected(); 
} 

,或者你可以做一個switch inside your css files。但是你必須使用ClientBundles。

在那裏,你可以有這樣的事情:

@external gwt-button; 
@if user.agent safari { 
    .gwt-Button { 
     ... 
    } 
} 

@external GWT-按鈕是爲了避免混淆錯誤。你也可以使用@external *;

+0

此方法導致錯誤與CSS分析和模糊處理。所以這是不合適的。 –

+0

爲什麼要在css解析和模糊錯誤中運行? – Sam

+0

你必須正確使用CssResource,這只是一個片段。如果您想了解更多關於CssResource的信息,請閱讀文檔,但這是一個關於如何使用它的說明。在你的情況下,你可能不會使用外部gwt-button。或者只是外部*而沒有混淆。我已更改我的代碼以清楚說明。 – Sam

0

你要創建兩個類加載該CSS文件:

你可以做輸入gwt.xml文件

<replace-with 
    class="com.test.classMobile"> 
    <when-type-is 
     class="com.Test.classBrowser" /> 
    <when-property-is name="tablet.user.agent" value="ipad" /> 
</replace-with> 

相關的一些東西試試看this..I我不知道100 %