GWT接口问题:突破异常:TypeError:无法读取属性' getRestWrapper'未定义的

时间:2016-01-29 11:14:42

标签: java html5 gwt gradle libgdx

我正在使用Libgdx编写一个GWT应用程序&在运行时加载正确的休息库时遇到一些困难。

在我的核心gradle项目中,我已经定义了一个" RestWrapper"允许访问特定于平台的REST功能的接口(在GWT,RestyGWT的情况下)。当HTML5启动程序运行时,它将它的实现传递给核心项目中的LibGDX游戏类。

然而,当运行HTML5项目时,编译的JS引发了这个错误:

Breaking on exception: TypeError: Cannot read property 'getRestWrapper' of undefined

问题似乎出现在第一个界面(PlatformWrapper)上。 我理解GWT编译器在接口方面有点笨拙,我应该采用不同的方法从我的核心项目运行GWT特定代码吗?

调用代码(在核心项目中:)

UserSessionToken token =client.getPlatform().getRestWrapper().getRestLogin().attemptLogin(userNameBox.getText(),passwordBox.getText());

接口(核心项目中):

PlaformWrapper

public interface PlatformWrapper {

public RestWrapper getRestWrapper();....

RestWrapper

/* Platform independent wrapper for REST services */ 
public interface RestWrapper {

public RestLogin getRestLogin();....

实施(在HTML5项目中):

PlatformWrapper(顶级)

public class GWTWrapper implements PlatformWrapper {

public RestWrapper gwtRestWrapper;

public GWTWrapper(){
    gwtRestWrapper = new GWTRestWrapper();
}

@Override
public RestWrapper getRestWrapper() {
    return gwtRestWrapper;
}

GWTRestWrapper:

public class GWTRestWrapper implements RestWrapper {
public RestLogin restLogin;
public RestPortal restPortal;
public RestRegister restRegister;

public GWTRestWrapper(){
    restLogin = new GWTRestLogin(); //GWTRest Logic 
    restRegister = new GWTRestRegister();
    restPortal = new GWTRestPortal();       
}


@Override
public RestLogin getRestLogin() {
    return restLogin;
}

干杯。

1 个答案:

答案 0 :(得分:1)

工作变动:

public ApplicationListener getApplicationListener () {


        setLoadingListener(new LoadingListener(){

            @Override
            public void beforeSetup() {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterSetup() {
                // TODO Auto-generated method stub
                wrapper = new GWTWrapper();
                client.setPlatform(wrapper);
            }

        });
            return client;