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

无法使用BodyToNo从RouterFunction获取布尔值作为BodyParameter

谢清野
2023-03-14

我试图从Angular 6应用程序中获取布尔参数,但Spring无法处理它。我得到了以下错误:

org。springframework。网状物服务器不受支持的MediaTypeStatusException:415不受支持的\u媒体\u类型“内容类型”text/plain;bodyType=java.lang.Boolean不支持字符集=UTF-8“

这是我的前端代码:

  updateConfirmationDate(reportInfo: number, isItTrue: boolean): Observable<Boolean> {
    const url = this.url;
    return this.httpClient.patch(url, isItTrue).pipe(first(), catchError(err => console.log(err)));
  }

这就是我在背后处理的方式:

路由器:

    public RouterFunction<ServerResponse> router() {
        return RouterFunctions.route()
                .path(apiPrefix, builder -> builder
                        .PATCH("/patchBooleanEndpoint", diagnosticHandler::updateBooleanEndpoint)
                     )
                )
                .build();
    }

处理:

    @NonNull
public Mono<ServerResponse> updateMyBoolean(ServerRequest request) {
    final Long id = Long.parseLong(request.pathVariable("id"));

    return request.bodyToMono(Boolean.class)
            .flatMap(myBoolean -> service.updateBooleanById(id, myBoolean))
            .flatMap(savedBoolean ->
                    status(HttpStatus.OK)
                            .contentType(MediaType.APPLICATION_JSON)
                            .body(Mono.just(savedBoolean), Boolean.class));
}

非常感谢,祝你今天愉快

共有1个答案

公良征
2023-03-14

从Angular应用程序调用后端服务器时,必须将内容类型设置为'application/json'

差不多

const headers = new HttpHeaders()
    .set("Content-Type", "application/json");

然后将其设置为您的补丁请求。

基于堆栈跟踪,前端调用内容类型为text/plain的后端服务器;charset=UTF-8'因此它(后端服务器)无法解析请求正文。

 类似资料:
  • 我正在使用CodeIgniter 3和PostgreSQL 9.4数据库。如果数据库中相应列的数据类型是布尔值,有没有办法在PHP中获取布尔值? 我使用CodeIgniters查询生成器类,如下所示: 用户表中的所有布尔值都由字符串('t'和'f')表示。

  • 问题内容: 如何在Android上的SQLite数据库中获取布尔字段的值? 我通常使用,等获取字段的值,但似乎没有方法。 问题答案: 它是:

  • 我有我的科特林班 以下是我获得价值的方式 但问题是,我没有任何问题地获得了字段的价值。但是 布尔字段始终保持 null。我已经用一些其他布尔前缀,这很好。当我使用 或 时,我没有得到布尔值。任何人都可以解释我为什么我面临这个问题。#AskFirebase

  • 今天,我遇到了扫描函数的问题。假设您有一个类似于以下示例的结构。 如果运行以下代码 它会打印出来的 原因是fscanf函数假定a.bVal是一个整数,并覆盖a.nVal的前3个字节。这个问题可以通过下面的脏解来解决。 我的问题是,除了解释的解决方案之外,有没有更干净、更直接的方法来避免这个问题?

  • 问题内容: 我正在“ Java如何编程”一书中做练习。我应该制作一个模拟投币的应用程序。我应该做一个方法(翻转),随机返回硬币的一面。我倾向于使该方法返回1或2,在主方法中,我将值“转换”为硬币的两面。问题是我收到一条错误消息:“类型不匹配- 无法从int转换为boolean”。我真的认为我一直都只使用整数,并且不知道布尔值是如何出现的。 代码如下: 问题答案: 您的密码 应该 您正在为intVa

  • 但是这个代码不起作用。编译器说 我在试图理解代码的问题是什么。我认为将返回一个布尔值流,我可以通过收集这些值。