当前位置: 首页 > 知识库问答 >
问题:

Spring Boot返回没有响应的纯文本正文注释

徐栋
2023-03-14

我想在Spring Boot Controller方法中返回一条没有@ResponseBody注释的纯文本消息。

通常,当我返回一个字符串时,会出现一个错误。(实际上,它会查找html文件。)

@GetMapping("/test/message")
    public String Message() {
        
        return "This is a plain Text";
    }

当我使用此代码时,这将返回一个错误

错误解决模板[这是一个纯文本],模板可能不存在或可能无法访问任何配置的模板解析程序org.thymeleaf.exceptions.TemplateInputExc0019:错误解决模板[这是一个纯文本],模板可能不存在或可能无法访问通过任何配置的模板解析器

我的预期结果(不使用ResponseBy)这是一个纯文本

响应体的问题是它只响应纯文本或html文件。我想自己控制它。

共有3个答案

孔冥夜
2023-03-14

基本上,如果您使用@RestController注释注释您的控制器,那么响应可以作为纯文本返回。并使用@Controller注释,当您想要将其呈现到模板时。

@Controller
class MyThymeleafController {

    @GetMapping("/greeting")
    public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
        return "greeting";//renders a template
    }
}

@RestController
class MyRestController {

    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello World";//renders plain text
    }
}

https://github.com/faskan/spring-boot-thymeleaf-sample

如果您能解释为什么需要在相同的方法中呈现模板或字符串的原因,那就太好了。

舒阳州
2023-03-14

您可以直接将HttpServletResponse作为控制器方法中的参数,通过设置contentType将任何数据写入HttpServletResponse,也可以使用PrintStream直接将输出写入响应对象。

public void getData(HttpServletResponse res) {
    InputStream in = servletContext.getResourceAsStream("url");
    res.setContentType("Any content type");
    IOUtils.copy(in, response.getOutputStream());
}

PrintStream print = new PrintStream(res);
print.write("data");
晋俊贤
2023-03-14

一个解决办法是

@GetMapping("/test/message")
public ResponseEntity<String> Message() {
    return new ResponseEntity<>("This is a plain Text", HttpStatus.OK);
}
 类似资料:
  • 我正在试用新的Spring 4.0@RestController,以从控制器返回一个简单的文本响应: 当我访问/心跳时,我返回: 结果包括双引号,这是我没有想到的。 当我访问/heartbeat/test时,我会得到一个空响应,但我希望我还活着!文本 使现代化 卷曲-ihttp://myserver.com/rest/heartbeat HTTP/1.1 200 OK内容类型:applicatio

  • 问题内容: 我使用原型进行AJAX开发,并且使用如下代码: 而且我发现“结果”是一个空字符串。所以,我尝试了这个: 但这也没有用。如何获取responseText供其他方法使用? 问题答案: 请记住,在someFunction完成工作后很久才调用onComplete。您需要做的是将回调函数作为参数传递给somefunction。当进程完成工作时(即onComplete),将调用此函数:

  • 我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?

  • 我有一个接收HTTP请求的微服务(Java Spring Boot),然后通过HTTP调用REST API调用另一个服务。被调用的服务返回HTTP状态201(无响应正文),但我需要返回HTTP 200和响应正文。 我使用WebClient调用其他服务,对于201状态,我使用的是bodyToMono(Void.class)。那么,如何为我的微服务的客户端返回HTTP 200响应体呢?最佳做法是什么?

  • 问题内容: 这个问题已经在这里有了答案 : 如何从异步调用返回响应? (39个答案) 6年前关闭。 我使用原型进行AJAX开发,并使用如下代码: 而且我发现“结果”是一个空字符串。所以,我尝试了这个: 但这也没有用。如何获取responseText供其他方法使用? 问题答案: 请记住,在someFunction完成工作后很久才调用onComplete。您需要做的是将回调函数作为参数传递给somef

  • 我试图编写一个方法,它接受@PathVariable参数,并将用户重定向到一个jsp文件。 @pathvariable(value=“customerId”)字符串customerId @pathvariable(name=“customerId”)字符串customerId @pathvariable(“customerId”)字符串customerId 谢谢你的帮助。