GWT Autobean Codex 读取地图
Posted
技术标签:
【中文标题】GWT Autobean Codex 读取地图【英文标题】:GWT Autobean Codex reading a Map 【发布时间】: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();
这有什么问题?
【问题讨论】:
【参考方案1】:AFAIK Maps
和 Lists
和其他非简单对象只能是引用类型,不能是值类型。有关详细信息,请参阅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 中的新方法),也会发生这种情况。
【讨论】:
以上是关于GWT Autobean Codex 读取地图的主要内容,如果未能解决你的问题,请参考以下文章