有人帮忙..如何使用JSON将我的Servlet输出的字符串值传递给我的ExtJS ..
我的Servlet有这样的输出;
[{"Name":"No Top Specified"},
{"Name":"No Bottom Specified"},
{"Name":"13KG F/B HAPPY PREMIUM TOP"},
{"Name":"13KG F/B SHARB B TOP"},
{"Name":"13KG F/B TROPIX TOP"},
{"Name":"13KG F/B BOTTOM 351.00"},
{"Name":"13KG F/B SHARBATLY BOTTOM"},
{"Name":"13KG F/B TROPIX BOTTOM"},
{"Name":"14KG F/B ORGANIC TOP"},
{"Name":"14KG F/B BOTTOM"}]
这些数据来自我的数据库..我想知道我的ExtJS的语法是什么,使这些数据成为我的ExtJS驱动的组合框的数据。感谢:。)
这是我的服务方法..
JSONArray jsonarray = new JSONArray();
ResultSetMetaData rsmd = rs.getMetaData();
int y = 1;
while(rs.next()){
int numColumns = rsmd.getColumnCount();
JSONObject obj = new JSONObject();
for (int i=1; i<numColumns+1; i++) {
String column_value = rs.getString(i);
obj.put("Name", column_value);
response.setContentType("application/jsons");
response.setCharacterEncoding("UTF-8");
}
jsonarray.put(obj).toString();
y++;
}
System.out.println(jsonarray);
response.getWriter().println(jsonarray);
rs.close();
pst.close();
答案 0 :(得分:1)
您只需要从servlet返回一个合适的JSON,然后使用ExtJS在某处处理它。
Servlet方法:
public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
List<Data> data = ...;//populate data from your database in key-value pairs
String json = new Gson().toJson(data);//or generate JSON the other way
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
数据类:
public class Data {
private String label;//getter+setter
private String value;//getter+setter
}
使用以下javascript处理jsp中的数据:
Ext.onReady(function() {
Ext.Ajax.request({
url: '/servleturl',
success: function(response){
var states = Ext.decode(response.responseText);
var values = Ext.create('Ext.data.Store', {
fields: ['label', 'value'],
data : states
});
var combo = Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose your shape: ',
store: values,
displayField: 'value',
valueField: 'label',
queryMode: 'local',
renderTo: 'wrapper'
});
}
});
});
以及jsp中的以下div
:
<div id="wrapper"></div>
或者,您可以在最初渲染视图时,一次性填充组合框,使用request.setAttribute(data)
并稍后在jsp中处理它,而不是通过AJAX调用另一个servlet。
答案 1 :(得分:0)
你在找这样的东西吗?
var servlet = Ext.create('Ext.data.Store', {
fields: ['Name'],
data : [
{"Name":"No Top Specified"},
{"Name":"No Bottom Specified"},
{"Name":"13KG F/B HAPPY PREMIUM TOP"},
{"Name":"13KG F/B SHARB B TOP"},
{"Name":"13KG F/B TROPIX TOP"},
{"Name":"13KG F/B BOTTOM 351.00"},
{"Name":"13KG F/B SHARBATLY BOTTOM"},
{"Name":"13KG F/B TROPIX BOTTOM"},
{"Name":"14KG F/B ORGANIC TOP"},
{"Name":"14KG F/B BOTTOM"}
]
});
Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose State',
store: servlet,
queryMode: 'local',
displayField: 'Name',
valueField: 'Name',
renderTo: Ext.getBody()
});