【问题标题】:Bad Request after calling GET Request调用 GET 请求后的错误请求
【发布时间】:2021-01-26 13:46:47
【问题描述】:

我想做什么:

我想将两个参数从前端传递到后端。

这是我的代码:

在 TS 文件中:

activeFromActiveToQuery(req?: any): Observable<ResponseWrapper>{
        const options = createRequestOption(req);
        options.params.append("active_from", req.active_from.toString());
        options.params.append("active_To", req.active_to.toString());

        return this.http.get(this.resourceActiveFromActiveToURL, options)
            .map((res: Response) => this.convertResponse(res));
    }

checkOverlappingDates (recommendedSection: RecommendedSection) {
        this.activeFromActiveToQuery({
            active_from: recommendedSection.activeFrom,
            active_to: recommendedSection.activeTo
        }).subscribe((data) => {
            var retValue;
            if(data.json == ""){
                retValue = false;
            }else{
                retValue = true;
            }
            return retValue;

在 Java-Resource 类中:

public ResponseEntity<List<RecommendedSection>> getRecommendedSectionActiveFromAndActiveToMatching(@RequestParam("active_from") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) DateTime active_from, 
                                                                                                       @RequestParam("active_to") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) DateTime active_to){
        log.debug("REST request to get active_from and active_to: {}", active_from, active_to);
        List<RecommendedSection> entityList = recommendedSectionService.findRecommendedSectionActiveFromAndActiveToMatching(active_from, active_to);
        return ResponseEntity.ok().body(entityList);
    }

问题:

我收到一个错误请求,它告诉我以下内容:

“无法将类型'java.lang.String'的值转换为所需类型'org.joda.time.DateTime';嵌套异常是org.springframework.core.convert.ConversionFailedException:无法从类型转换[java .lang.String] 为值 '[object Object ]'; 嵌套异常是 java.lang.IllegalArgumentException: Invalid format: "[object Object]""

如果这是一个非常简单的解决方案,我很抱歉。我根本找不到适合我的解决方案。

但是知道如何解决这个问题吗?

【问题讨论】:

  • 你检查过这个吗?看起来很相似:stackoverflow.com/questions/40274353/…
  • @GytisTG 是的,我用它试图修复它,但它仍然不起作用。
  • 首先,在您的日志中,您传递给参数并且您只有一个占位符。它与您的问题无关,仅供参考

标签: java spring typescript


【解决方案1】:

由于您使用的是 ISO 日期时间格式,请确保您的请求参数(active_from 和 active_to)采用 ISO 日期时间格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX 例如2020-10-12T00:01:01 是一个很好的示例值。另外,我建议使用 LocalDateTime

而不是 Joda dateTIme

【讨论】:

  • 谢谢!从 DateTime 切换到 LocalDateTime 并且它起作用了。
  • 我为你感到高兴。 LocalDateTIme 是新的并且是线程安全的,因为它是不可变的,所以总是尽量倾向于在新代码中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 2019-12-02
  • 2018-12-05
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多