1

誰か助けて..JSONを使用して、サーブレット出力の文字列値をExtJSに渡すにはどうすればよいですか..

私のサーブレットには次のような出力があります。

[{"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();
4

2 に答える 2

1

サーブレットから適切な JSON を返し、後で ExtJS を使用して処理する必要があります。

サーブレットの方法:

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'
            });
        }
    });
});

そしてdivあなたのjspで以下:

<div id="wrapper"></div>

request.setAttribute(data)または、最初にビューをレンダリングするときに、別のサーブレットへの AJAX 呼び出しではなく、jsp でそれを使用して後で処理することにより、コンボボックスに「一度に」入力することができます。

于 2013-03-12T15:41:22.937 に答える
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()
});
于 2013-03-12T10:07:57.610 に答える