Перенаправить на @ResponseBody? - PullRequest
3 голосов
/ 17 мая 2011

У меня есть что-то для входа в AJAX через Spring Security:

@RequestMapping(value="/entry.html", method=RequestMethod.GET)
public String getEntry(){
    return isAuthenticated()? "redirect:/logout.jsp":"entry";
}

@RequestMapping(value="/postLogout.html", method=RequestMethod.GET)
public @ResponseBody String getPostLogout(){
    return "{success:true, logout:true, session:false}";
}

Поток таков, что при получении вызова /entry.html он проверит и выберет

  • перенаправить на /logout.jsp => обработано Spring Security, а затем перенаправить на /postLogout.html => ответ JSON
  • разрешить для просмотра entry, который является jsp содержит только строку json

Я хотел бы знать, могу ли я использовать @ResponseBody в getEntry() без использования jsp для записи только значения json?

1 Ответ

1 голос
/ 17 мая 2011

Самый простой способ вернуть JSON из Spring - это через Джексона .

Я бы создал собственный объект возврата:

public class MyReturnObject{
private boolean success;
private boolean session;
private boolean logout;
// + getters and setters
// + 3-arg constructor
}

и напишите метод контроллера следующим образом:

@RequestMapping(value="/postLogout.html", method=RequestMethod.GET)
@ResponseBody 
public MyreturnObject getPostLogout(){
    return new ReturnObject(true,true,false);
}

Spring + Jackson позаботится о сериализации объекта в JSON и установке правильного типа MIME. Смотрите мой предыдущий ответ для полной рабочей версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...