2012-03-27 45 views
0

我在使用CssResource的同时收到奇怪的NPE。 我已经定义了以下在我的CSS文件中的两个CSS类:GWT CssResource抛出NPE

.mainPanelStyle 
{ 
    height: 250px; 
    width: 250px; 
    background-color: gray; 
    cursor: pointer; 
} 

.titleLabelStyle 
{ 
    font-size: 14px; 
    font-family: Segoe UI Semibold; 
    color: white; 
} 

然后,我定义的接口为:

public interface HomePanelCssResource 
     extends CssResource 
    { 
     String mainPanelStyle(); 

     String titleLabelStyle(); 
    } 

,并增加了进入ClientBundle类为:

@Source("com/myapp/homePanel/css/homePanelDefault.css") 
    HomePanelCssResource getHomePanelStyle(); 

当我在类文件中使用这个CSS资源时,调用cssResource.mainPanelStyle()工作正常。但打电话cssResource.titleLabelStyle()投掷NPE。它说:“你忘了添加必需的依赖?”。

我不知道什么是错的。你能帮我解决这个问题吗?

+0

你不应该把身边 “的Segoe UI Semibold” 行情?我无法解释NPE(不是没有堆栈跟踪),但这可能是原因。 – 2012-03-27 10:14:48

+0

而不是'cssResource.titleLabelStyle()'你的意思是'getHomePanelStyle.titleLabelStyle()'?也许你没有实例化你的资源实例。 – checketts 2012-03-29 04:17:34

回答

3

我不知道你的错误来自,但是这可能会帮助你......

这是我如何定义和访问的CssResource:

我的主类: 它定义客户端软件包和Cssresource名称。

interface MyClientBundler extends ClientBundle { 

    public static final MyClientBundler INSTANCE = GWT.create(MyClientBundler.class); 

    //my.css and the whole packege path are allowed 
    @Source("stefank/client/my.css") 
    public MyResources css(); 
} 

interface MyResources extends CssResource { 
    String test(); 
} 


public void onModuleLoad() { 
    Label l = new Label("Resource Test"); 

    MyClientBundler.INSTANCE.css().ensureInjected(); //importaten, else the resource might not be loaded jet 

    l.addStyleName(MyClientBundler.INSTANCE.css().test()); 

    RootPanel.get().add(l); 
} 

我的CSS种源(INT相同packagage作为主类):

.test { 
    background-color: blue; 
    height: 50px; 
    width: 100px; 
} 

这给我的标签大小合适和正确的背景颜色。

链接: CssResource

+0

斯蒂芬,你摇滚!感谢ensureInjected()!!这让我疯狂。 – Chania 2012-09-11 15:16:39

+0

:)谢谢,我也花了很长时间^^ – Stefan 2012-09-11 15:25:05