【问题标题】:GWT Autobean Codex reading a MapGWT Autobean Codex 读取地图
【发布时间】:2012-08-22 15:30:42
【问题描述】:

我有一个 JSON 映射,例如:

{ "element":"value","element2":"value2",...}

同时具有键和值字符串。我尝试用 autobean 阅读它,但我得到了奇怪的例外。它应该是直截了当的,不是吗?

我得到的错误是:

[ERROR] [project_name] - The java.util.Map parameterization is not simple, but the getConf method does not provide a delegate

我是这样看地图的:

final String jsObject = GeneralContextNativeReader.read("globalConf");
GlobalConfFactory globalConfFactory = GWT.create(GlobalConfFactory.class);
Map<String, String> globalConf = AutoBeanCodex.decode(globalConfFactory, Map.class, jsObject).as();

工厂定义为:

public interface GlobalConfFactory extends AutoBeanFactory {
    AutoBean<Map<String, String>> globalConf();
}

这有什么问题?

【问题讨论】:

    标签: java json gwt gxt autobean


    【解决方案1】:

    AFAIK MapsLists 和其他非简单对象只能是引用类型,不能是值类型。有关详细信息,请参阅here
    将代码更改为此应该可以工作:

    public interface Data {
       public Map<String,String>> getGlobalConf();
    }
    
    public interface DataFactory extends AutoBeanFactory {
       AutoBean<Data> getData();
    }
    
    final String jsObject = GeneralContextNativeReader.read("globalConf");
    DataFactory dataFactory = GWT.create(DataFactory.class);
    Data data = AutoBeanCodex.decode(dataFactory, Data.class, jsObject).as();
    Map<String, String> globalConf = data.getGlobalConf();
    

    您的 json 字符串必须看起来像这样:

    {"globalConf":{ "element":"value","element2":"value2",...}}
    

    【讨论】:

      【解决方案2】:

      如果您的 AutoBean 接口包含静态方法(Java 8 中的新方法),也会发生这种情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多