Spring MVC - 如何在ResponseEntity方法中返回视图?

时间:2018-01-03 12:35:32

标签: java spring spring-mvc

我有问题。 我不知道如何在返回类型为datenum的方法中返回视图。 我想用我的控制器下载一个文件。 如果上传文件,下载工作正常。 如果没有上传文件,它就不应该做任何事情(返回实际视图)。

现在我不知道怎么做,因为我猜不可能返回一个视图(因为我需要返回类型字符串)。

你有什么想法吗?

ResponseEntity

2 个答案:

答案 0 :(得分:2)

您好我的项目曾遇到类似的问题,即我必须根据某些逻辑对不同的返回类型视图与字符串进行比较。

首先,当您将响应实体作为返回类型时,绝对不可能返回模型和视图。

我使用泛型返回类型

解决了这个问题
public <T> T fileDownload (@Valid DownloadForm form, BindingResult result) throws IOException{

    //your code
   //here you can return response entity or 
   //modelAndView based on your logic

  }

答案 1 :(得分:1)

我发现这适用于Spring Boot 2和JSP视图:

@GetMapping(value = "/view/theobject/{id}")
public Object getDomainObject(ModelAndView mav, @PathVariable Long id) {
    Optional<DomainObject> theObject = svc.getDomainObject(id);
    if (theObject.isPresent()) {
        mav.setViewName("viewdomainobject");
        mav.addObject("theObject", theObject.get());
        return mav;
    }
    return ResponseEntity.notFound().build();
}

不需要令人讨厌的<T> T通用返回类型,也无需转换返回的对象。