我正在为一个类似于社交中心的课程制作一个Web应用程序,我正在使用带有Spring的Java和Spring社交模块。该应用程序的关键是有一个地方,您可以从Facebook和Twitter帐户浏览提要。因此,目前该应用程序允许创建帐户,登录,注销和浏览供稿。我没有使用spring social进行登录,因为该应用程序使用特定于应用程序的帐户,但在登录后,用户可以选择将他/她的facebook或Twitter帐户链接到应用程序。 该应用程序成功连接到Facebook和Twitter,并毫无问题地检索提要。我的项目基于可以在github Spring social quickstart project中找到的spring社交快速入门。 问题本身是当用户进入提要页面而没有将twitter或facebook帐户链接到应用程序时,它会抛出NullPointerException。这是发生异常的方法的代码
@RequestMapping(value={"/", "feed"}, method = RequestMethod.GET)
public String llenarFeed(Principal principal, Model model){
boolean emptyFeed = true;
if(facebook != null){
if( facebook.isAuthorized()){
model.addAttribute("fbFeed", facebook.feedOperations().getHomeFeed());
model.addAttribute("perfil", facebook.userOperations().getUserProfile());
emptyFeed = false;
}
}
if (twitter != null) {
model.addAttribute("timeline", twitter.timelineOperations().getHomeTimeline());
emptyFeed = false;
}
model.addAttribute("usuario", usuarioService.loadUsuarioByUsername(principal.getName()));
return "feed";
}
问题发生在这一行if(facebook.isAuthorized()) 所以我知道facebook不是null,但是调用isAuthorized会导致NullPointerException,问题是我该如何解决呢?
答案 0 :(得分:1)
我用try-catch解决了。当收到错误时,它会重定向到连接页面。
@RequestMapping(value={"/", "feed"}, method = RequestMethod.GET)
public String llenarFeed(Principal principal, Model model){
boolean emptyFeed = true;
try{
if(facebook != null){
if( facebook.isAuthorized()){
model.addAttribute("fbFeed", facebook.feedOperations().getHomeFeed());
model.addAttribute("perfil", facebook.userOperations().getUserProfile());
emptyFeed = false;
}
}
}
catch{
return "redirect:/connect/facebook";
}
if (twitter != null) {
model.addAttribute("timeline", twitter.timelineOperations().getHomeTimeline());
emptyFeed = false;
}
model.addAttribute("usuario", usuarioService.loadUsuarioByUsername(principal.getName()));
return "feed";
}