首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取地图的GWT Autobean Codex

读取地图的GWT Autobean Codex
EN

Stack Overflow用户
提问于 2012-08-22 23:30:43
回答 2查看 1.7K关注 0票数 2

我有一个如下的JSON映射:

代码语言:javascript
复制
{ "element":"value","element2":"value2",...}

同时包含键和值字符串。我尝试用autobean来读取它,却得到了奇怪的异常。应该是直截了当的,不是吗?

我得到的错误是:

代码语言:javascript
复制
[ERROR] [project_name] - The java.util.Map parameterization is not simple, but the getConf method does not provide a delegate

我是这样读地图的:

代码语言:javascript
复制
final String jsObject = GeneralContextNativeReader.read("globalConf");
GlobalConfFactory globalConfFactory = GWT.create(GlobalConfFactory.class);
Map<String, String> globalConf = AutoBeanCodex.decode(globalConfFactory, Map.class, jsObject).as();

工厂定义为:

代码语言:javascript
复制
public interface GlobalConfFactory extends AutoBeanFactory {
    AutoBean<Map<String, String>> globalConf();
}

这有什么错呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-23 16:39:22

AFAIK、MapsLists等非简单对象只能是引用类型,不能是值类型。有关更多详细信息,请参阅here

将代码更改为以下内容将使其正常工作:

代码语言:javascript
复制
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字符串必须是这样的:

代码语言:javascript
复制
{"globalConf":{ "element":"value","element2":"value2",...}}
票数 1
EN

Stack Overflow用户

发布于 2015-08-26 02:11:16

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12076550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档