2017-02-09 32 views
0

請幫助我,我做什麼錯GWT Autobean Bean是空

InfraNameModel

public interface InfraNameModel { 
    String getInfraName(); 

    void setInfraName(String infraName); 
} 

InfraNameModelImpl

public class InfraNameModelImpl implements InfraNameModel { 
    private String infraName; 

    @Override 
    public String getInfraName() { 
     return infraName; 
    } 

    @Override 
    public void setInfraName(String infraName) { 
     this.infraName = infraName; 
    } 
} 

InfraNameModelList

public interface InfraNameModelList<T extends InfraNameModel> { 

    public List<T> getInfraNameModelList(); 

    public void setInfraNameModelList(List<T> infraNameModel); 
} 

InfraNameModelListImpl

public class InfraNameModelListImpl implements InfraNameModelList<InfraNameModel> { 
    private List<InfraNameModel> infraNameModelList; 

    @Override 
    public List<InfraNameModel> getInfraNameModelList() { 
     return infraNameModelList; 
    } 

    @Override 
    public void setInfraNameModelList(List<InfraNameModel> infraNameModelList) { 
     this.infraNameModelList = infraNameModelList; 
    } 
} 

IBeanFactory

public interface IBeanFactory extends AutoBeanFactory { 
    IBeanFactory INSTANCE = GWT.create(IBeanFactory.class); 

    AutoBean<InfraNameModel> infraNameModel(); 

    AutoBean<InfraNameModelList> infraNameModelList(); 
} 

...

  InfraNameModelList infraNameModelList = beanFactory.deserializeFromJson(" [{\"infraName\":\"TEST1\"},{\"infraName\":\"TEST2\"}}"); 
      if (infraNameModelList == null) 
       logger.info("infraNameModelList=== null"); 
      else 
       logger.info("infraNameModelList not null " + infraNameModelList); 
      List<InfraNameModelImpl> infraNameModel = infraNameModelList.getInfraNameModelList(); 
      if (infraNameModel == null) 
       logger.info("infraNameModel=== null"); 
      else 
       logger.info("infraNameModel=== not null " + infraNameModel); 
      InfraNameModelImpl infraNameModelImpl = infraNameModel.get(0); 
      if (infraNameModel == null) 
       logger.info("infraNameModelImpl=== null"); 
      else 
       logger.info("infraNameModelImpl=== not null " + infraNameModelImpl); 
      logger.info("===" + infraNameModelImpl.getInfraName()); 

所以我有這樣的錯誤 在這一行

ConsoleLogger.java:32 infraNameModel ===空

爲什麼infraNameModel爲空??? =(

===SUCCESS 
ConsoleLogger.java:32 ===[{"infraName":"TEST1"},{"infraName":"TEST2"}] 
ConsoleLogger.java:32 infraNameModelList not null [email protected] 
ConsoleLogger.java:32 infraNameModel=== null 
ConsoleLogger.java:32 (TypeError) : Cannot read property 'get_18_g$' of null 
H3f_g$ @ ConsoleLogger.java:32 
eAf_g$ @ SimpleConsoleLogHandler.java:36 
szf_g$ @ Logger.java:312 
rzf_g$ @ Logger.java:302 
Pzf_g$ @ Logger.java:236 
rad_g$ @ LogConfiguration.java:169 
lab_g$ @ Impl.java:186 
$9_g$ @ Impl.java:293 
(anonymous) @ Impl.java:77 
ConsoleLogger.java:55 Exception: com.google.gwt.core.client.JavaScriptException: (TypeError) : Cannot read property 'get_18_g$' of null 
ConsoleLogger.java:32 TypeError: Cannot read property 'get_18_g$' of null 
    at uHg_g$.D$g_g$ [as onSuccess_8_g$] (Configuration.java:71) 
    at uHg_g$.xHg_g$ [as onSuccess_1_g$] (Configuration.java:55) 
    at S9f_g$.Ny_g$ [as onResponseReceived_0_g$] (AbstractRequestCallback.java:94) 
    at ZLc_g$.aMc_g$ [as fireOnResponseReceived_0_g$] (Request.java:250) 
    at hNc_g$.iNc_g$ [as onReadyStateChange_0_g$] (RequestBuilder.java:412) 
    at XMLHttpRequest.<anonymous> (XMLHttpRequest.java:329) 
    at X9_g$ (Impl.java:239) 
    at $9_g$ (Impl.java:291) 
    at XMLHttpRequest.<anonymous> (Impl.java:77) 

回答

1

爲什麼infraNameModel爲空??? =(

因爲數組不具有infraNameModelList屬性。

你不得不JSON數組包裝成具有這種屬性的對象使其與您的AutoBean模型相匹配。

+0

我剛剛閱讀了4年前回復https://groups.google.com/forum/#!topic/google-web-toolkit/8Ts07mG0Ci8。 你能更詳細地描述嗎? – LeshaRB

+0

[{\「infraName \」:\「TEST1 \」},{\「infraName \」:\「TEST2 \」}] ...............需要我包裝這個JSON在{ \t 「結果」:[{ \t \t \t 「infraName」: 「TEST1」 \t \t},{ \t \t \t 「infraName」: 「TEST2」 \t \t} \t] } ? – LeshaRB