Использование Spring и Jackson для рендеринга JSON без влияния на все представления - PullRequest
1 голос
/ 28 июня 2010

Spring MVC AJAX и JSON с использованием Resolver для настраиваемого представления и настраиваемого представления

Здесь я получил представление об отображении JSON, добавив «.json» в конец URL-адреса, но с помощью этого метода посетитель сайта может просто поставить .json в конце любого URL-адреса, который им нравится, и часто это приведет к исключению, которое дает слишком много информации относительно внутреннего кода.

Я мог бы поймать исключение и предоставить более понятное сообщение об ошибке, но я не уверен, что это лучший способ справиться с этим, поскольку время, когда я хотел бы преобразовать объект в JSON, на самом деле довольно ограничено и действительно будет использоваться только для страниц администрирования, есть ли способ ограничить эту функцию конкретными URL-адресами, контроллерами или методами контроллеров?

Редактировать: Речь идет не о URL-адресах, которые не отображаются с выдачей исключений, а о реальных URL-адресах с ".json" после того, как они сопоставляются, пытаясь отобразить их содержимое в формате JSON, когда это не то, что нужно

Меня не волнует исключение, которое я получаю, имеет смысл, что я его получаю, я говорю, что некоторые URL, фактически САМЫЕ URL, не должны восприниматься как JSON, и поставить ".json" после того, как он должен просто вернуть 404

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Я думаю, что проблема больше в безопасности. Если вы используете инфраструктуру, такую ​​как Spring Security, вы можете контролировать, что некоторые URL, такие как **. Json, могут быть доступны только некоторым пользователям (например, администратору, если они используются только на страницах администратора).

0 голосов
/ 01 марта 2011

Вы должны взглянуть на это: Настроить Spring MappingJacksonHttpMessageConverter

По сути, вы можете делать все без представлений или средств просмотра, используя @ ResponseBody и MappingJacksonHttpMessageConverter

Примерно так:

@RequestMapping(value = "/test/data")
@ResponseBody
public TestFormData dostuff() {
    TestFormData data = new TestFormData();
    data.setName("myname");
    return data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...