我正在研究extJs 3.2.x
我有一个简单的函数,它返回一个字符串。
public Object getRevenueCurrency(....) {
return "USD";
}
我有Jackson mapper将响应类型映射到JSON。
<bean name="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="contentType">
<!-- <value>application/json</value> -->
<value>text/html</value>
</property>
</bean>
尝试检索数据的方式如下:
currencyStore = new Ext.data.JsonStore({
id:'currencystore',
url: 'xxxxxxx?action=getcurrency',
root: 'string',
listeners: {load: function(store) {
rev_currency=store.?????;
}
}
});
currencyStore.on('exception',function( store, records, options ){
alert('Exception was called');
},this);
Fiddler将服务器的响应显示为:
{"string": "USD"}
虽然我没有得到服务器或js异常,但会调用异常警报。
1.我如何提取货币值?
2.在上面的异常处理程序中提取有关异常的有意义信息的方法是什么?
答案 0 :(得分:1)
关于你的第二个问题:
2.在上面的异常处理程序中提取有关异常的有意义信息的方法是什么?
根据docs for the exception event签名和参数:
exception( store, type, action, options, response, arg )
通过检查参数(例如通过console.log(...)),您应该检索一些有用的信息。
答案 1 :(得分:0)
您已通过设置root属性配置了商店,这意味着商店的读者希望json中的根节点匹配&#39;字符串&#39;。
所以读者实际上期待以下形式的回应。
{"string":[{"propertyname":"USD"}]}
相反,您可以在商店配置中取出root属性,因为返回的所有内容都是平面对象
答案 2 :(得分:0)
我注意到你的商店里没有配置任何字段,所以当读者拿走你的json respsonse时,它试图找到一个名为&#39; string&#39;绑定到。
查看JsonStore的ExtJS3文档 - &gt; http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.data.JsonStore
示例配置显示了字段的定义方式,因此您的商店应如下所示:
currencyStore = new Ext.data.JsonStore({
id:'currencystore',
url: 'xxxxxxx?action=getcurrency',
fields: ['string'],
listeners: {load: function(store, records, options) {
rev_currency=store.?????;
}
}
});
注意我还将params更改为加载函数处理程序,因此可以使用records [0]
访问从json创建的新记录