Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet. doPost - вернуть json. / 7 сообщений из 7, страница 1 из 1
18.09.2014, 14:18
    #38750447
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
Вот смотрю пример: jQuery Bootgrid
(И делаю по аналогии у себя)

Этот grid получает на вход json из doPost.
Судя из примера должен прийти такой JSON (Response):

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
{
  "current": 1,
  "rowCount": 10,
  "rows": [
    {
      "id": 19,
      "sender": "123@test.de",
      "received": "2014-05-30T22:15:00"
    },
    {
      "id": 14,
      "sender": "123@test.de",
      "received": "2014-05-30T20:15:00"
    },
  ],
  "total": 2
}


Создал свой сервлет:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("application/json; charset=UTF-8;");
		PrintWriter out = response.getWriter();	
		//out.println("{\"key\": \"value\"}"); // json type format {"key":"value"}
		
		
		JSONObject obj = new JSONObject();
		
		String s = "{\"current\":1,\"rowCount\": 10,\"rows\":[{\"id\":19,\"sender\":\"test.de\",\"received\":\"2014-05-30T22:15:00\"},{\"id\": 14,\"sender\":\"test.de\",\"received\":\"2014-05-30T20:15:00\"},],\"total\":2}";
			
		//obj.put("current", new Integer(1));
		//obj.put("rowCount", new Integer(10));
		//obj.put("total", new Integer(0));
		//obj.put("length", new Integer(0));
		
		
		//out.println("{\"current\": \"1\"}"); // json type format {"key":"value"}
		//out.println("{\"rowCount\": \"10\"}"); // json type format {"key":"value"}
		//out.println("{\"total\": \"0\"}"); // json type format {"key":"value"}
		//out.println("{\"length\": \"0\"}"); // json type format {"key":"value"}
	    
		out.println(s); // json type format {"key":"value"}
		
	        //out.println(obj); 
			
	}



Выложу еще примеры с сайта (на всякий случай):
HTML:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<table id="grid-data" class="table table-condensed table-hover table-striped">
    <thead>
        <tr>
            <th data-column-id="id" data-type="numeric">ID</th>
            <th data-column-id="sender">Sender</th>
            <th data-column-id="received" data-order="desc">Received</th>
            <th data-column-id="commands" data-formatter="commands" data-sortable="false">Commands</th>
        </tr>
    </thead>
</table>



JavaScript:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
var grid = $("#grid-command-buttons").bootgrid({
    ajax: true,
    post: function ()
    {
        return {
            id: "b0df282a-0d67-40e5-8558-c9e93b7befed"
        };
    },
    url: "/api/data/basic",
    formatters: {
        "commands": function(column, row)
        {
            return "<button type=\"button\" class=\"btn btn-xs btn-default command-edit\" data-row-id=\"" + row.id + "\"><span class=\"fa fa-pencil\"></span></button> " + 
                "<button type=\"button\" class=\"btn btn-xs btn-default command-delete\" data-row-id=\"" + row.id + "\"><span class=\"fa fa-trash-o\"></span></button>";
        }
    }
}).on("loaded.rs.jquery.bootgrid", function()
{
    /* Executes after data is loaded and rendered */
    grid.find(".command-edit").on("click", function(e)
    {
        alert("You pressed edit on row: " + $(this).data("row-id"));
    }).end().find(".command-delete").on("click", function(e)
    {
        alert("You pressed delete on row: " + $(this).data("row-id"));
    });
});


Здесь заменил url на свой:
Код: java
1.
url: "http://localhost:8080/MyProject/Servlet1",


url - Sets the data URL to a data service (e.g. a REST service). Either a String or a Function that returns a String can be passed. Default value is "".

POST Body (Request):
Код: javascript
1.
current=1&rowCount=10&sort[sender]=asc&searchPhrase=&id=b0df282a-0d67-40e5-8558-c9e93b7befed



Вопросы:
Меня больше всего интересует метод doPost, и как он отправляет json.
Правильно ли я делаю? Или что-то нужно сделать не так?
Пробовал разными способами (как видно из закомментированного текста).
Но результата пока нет - в grig пишется: No results found!
...
Рейтинг: 0 / 0
18.09.2014, 14:24
    #38750462
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
wvetalПравильно ли я делаю?

Нет.

wvetalИли что-то нужно сделать не так?
Использовать инструменты (API) работы с JSON, а не копипастить в String. Любая опечатка и ваш JSON не валиден.
К тому же этот API уже стандартизирован в JEE 7.

wvetalНо результата пока нет - в grig пишется: No results found!
Пора открыть для себя консоль разработчика в FireFox и Chrome.
...
Рейтинг: 0 / 0
18.09.2014, 16:14
    #38750646
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
Blazkowicz,
Спасибо за советы.

Переделал метод doPost:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("application/json; charset=UTF-8;");
		PrintWriter out = response.getWriter();	

		JSONObject obj2 = new JSONObject();	
		obj2.put("current", new Integer(1));
		obj2.put("rowCount", new Integer(10));
		obj2.put("total", new Integer(2));
				
		JSONObject obj3 = new JSONObject();
		obj3.put("id", new Integer(11));
		obj3.put("sender", "123@mail.ru");
		obj3.put("received", "2014-05-30T22:15:00");
		
		JSONObject obj4 = new JSONObject();
		obj4.put("id", new Integer(12));
		obj4.put("sender", "vetal@test.de");
		obj4.put("received", "2015-05-30T22:15:00");
				
		JSONArray list3 = new JSONArray();
		list3.add(obj3);
		list3.add(obj4);
		
		obj2.put("rows", list3);
		
		out.println(obj2);
	 	 			
	}


Теперь данные в grid выводятся, но почему-то сортировка по столбцам не работает и поиск не работает.
В какую сторону копать, чтоб сортировка и поиск заработали?

Blazkowicz Пора открыть для себя консоль разработчика в FireFox и Chrome.
Консолью разработчика пользуюсь.
...
Рейтинг: 0 / 0
18.09.2014, 16:29
    #38750678
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
wvetalВ какую сторону копать, чтоб сортировка и поиск заработали?

Вот в эту
http://www.jquery-bootgrid.com/Documentation
...
Рейтинг: 0 / 0
18.09.2014, 17:28
    #38750758
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
BlazkowiczwvetalВ какую сторону копать, чтоб сортировка и поиск заработали?

Вот в эту
http://www.jquery-bootgrid.com/Documentation
Если имелись ввиду параметры типа:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$(function(){
var grid = $("#grid-command-buttons").bootgrid({
    ajax: true,
    
    sorting: true,
    selection: true,
    multiSort: true,
    multiSelect: true,
    //rowCount: -1,
    columnSelection: true,
    ...


- то это не помогло.

Вообще может быть что-то не так с json строкой или сервлетом?
...
Рейтинг: 0 / 0
18.09.2014, 17:29
    #38750762
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
wvetal - то это не помогло.

А Ctrl+F5 ?
...
Рейтинг: 0 / 0
18.09.2014, 17:47
    #38750781
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Servlet. doPost - вернуть json.
BlazkowiczА Ctrl+F5 ?Тоже не помогло.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet. doPost - вернуть json. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]