【问题标题】:What's the best way to handle ResponseEntity on UI side?在 UI 端处理 ResponseEntity 的最佳方法是什么?
【发布时间】:2019-12-02 08:42:45
【问题描述】:

我有一个用户页面,我必须在页面加载后显示他和他的朋友写的所有帖子。在 UI 端执行此操作的最简单方法是什么?我正在使用 Thymeleaf + Spring。

 @RequestMapping(method = RequestMethod.GET, path = "/getBasicPosts")
    public ResponseEntity<Object> getUSerAndFriendsPosts(String userId) {
        List<Post> postList;
        try {
            postList = postService.getUserAndFriendsPosts(Long.valueOf(userId));
        } catch (Exception otherExc) {
            return new ResponseEntity<>(otherExc.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
        return new ResponseEntity<>(postList, HttpStatus.OK);
    }

【问题讨论】:

标签: java html spring-boot spring-mvc thymeleaf


【解决方案1】:

你使用 Thymeleaf + Spring,你的控制器必须返回 thymeleaf 模板的路径:

   @RequestMapping("/getBasicPosts/{userId}")
   public String showBasicPosts(Model model, @PathVariable("userId") String userId) {
      Object obj = getUSerAndFriendsPosts(String userId).getBody();  
      model.addAttribute("obj", obj);
      return "path/of/template";
   }

   private ResponseEntity<Object> getUSerAndFriendsPosts(String userId) {
      List<Post> postList;
      try {
         postList = postService.getUserAndFriendsPosts(Long.valueOf(userId));
      } catch (Exception otherExc) {
         return new ResponseEntity<>(otherExc.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
      }
      return new ResponseEntity<>(postList, HttpStatus.OK);
   }

当然你应该添加一些属性来告诉 Spring Thymeleaf 模板的位置:

@Bean
@Description("Thymeleaf Template Resolver")
public ServletContextTemplateResolver templateResolver() {
    ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
    templateResolver.setPrefix("/WEB-INF/views/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");

    return templateResolver;
}

@Bean
@Description("Thymeleaf Template Engine")
public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    templateEngine.setTemplateEngineMessageSource(messageSource());
    return templateEngine;
}

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多