重定向@ResponseBody?

时间:2011-05-17 10:05:59

标签: java json spring spring-mvc spring-security

我通过spring security安装了ajax:

@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 个答案:

答案 0 :(得分:1)

从Spring返回JSON的最简单方法是through Jackson

我创建了一个自定义的返回对象:

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将负责将Object序列化为JSON并设置正确的mime类型。有关完整的工作版本,请参阅this previous answer of mine