2014-05-02 39 views
0

工作,我有一個GWT-問題,GWT - ClientBundle的CSS文件不與類名

我想我的CSS移動到ClientBundle作爲CssResource因爲它聲稱是最好的做法,但有一個問題。它可以處理元素ID和元素名稱,但不能與類名稱一起使用。所以,它的工作原理,當我有

div{ 
    color: red; 
} 
#whatever_id{ 
    color: black; 
} 

但是,如果我添加一個類名稱以一個點(。)作爲

div{ 
    color: red; 
} 
#whatever_id{ 
    color: black; 
} 
.whatever_classname{ 
    color: green; 
} 

然後我獲得以下excepssion

onModuleLoad() threw an exception 

    Exception while loading module com.acatime.edutime.client.edutime. See Development Mode for details. 



java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:411) 
     at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200) 
     at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526) 
     at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) 
     at java.lang.Thread.run(Thread.java:744) 
    Caused by: java.lang.ExceptionInInitializerError 
     at com.acatime.edutime.client.edutime.onModuleLoad(edutime.java:29) 
     ... 9 more 
    Caused by: java.lang.RuntimeException: Deferred binding failed for 'com.acatime.edutime.client.resources.GeneralResources' (did you forget to inherit a required module?) 
     at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53) 
     at com.google.gwt.core.shared.GWT.create(GWT.java:72) 
     at com.google.gwt.core.client.GWT.create(GWT.java:86) 
     at com.acatime.edutime.client.resources.GeneralResources.<clinit>(GeneralResources.java:11) 
     ... 10 more 
    Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries) 
     at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:610) 
     at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:470) 
     at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49) 
     ... 13 more 

任何想法,我我錯過了?

+0

順便說一下,我不同意使用ClientBundle for CSS是最佳做法。一個單一的CSS文件更易於維護,您不需要重新編譯代碼以做出細微的更改,設計人員可以直接使用它 - 這些是保留CSS文件的好理由。 –

+1

你是否在'Java CssResource'和'ui.xml'文件中更改了'whatever_classname'?可能你錯過了將它正確映射到任何地方。 – Braj

回答

1

曾經存在包含下劃線的類名的問題。嘗試不帶下劃線的類名。

0

謝謝Andrei和Braj的回答。我發現我錯過了什麼。

我並沒有從一開始就得到它的事情是,我加入類名稱如下:

myWidget.setStyleName("whateverClassname); 

而這顯然是問題。它看起來像當你通過ClientBundle/CssResource使用CSS時,你必須指定類名如下:

myWidget.setStyleName(MyResources.INSTANCE.myCss()。whateverClassname());

和da da,突然一切正常工作:)我希望現在這是正確的方式添加樣式到GWT應用程序。我是GWT的新手,並試圖遵循GWT網站上推薦的最佳做法。