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

Spring试图将URL的最后一部分解析为Long参数

柴泰平
2023-03-14

当我试图通过web浏览器中的此URL调用我的服务器时:

http://localhost:8080/server_platform/api/predios/count

服务器工作正常并返回预期结果。

REST控制器的定义如下:

@Controller
@RequestMapping(value = "api/predios")
public class PredioController {

    @RequestMapping(value = "/count", method = { RequestMethod.GET }, produces = { "text/plain" })
    @ResponseStatus(value = HttpStatus.OK)
    public @ResponseBody String count(
            HttpServletResponse response) throws Exception {
        // code removed to simplify
    }    
}

但是,当我使用Spring的RestTemplate的交换方法时,如下所示:

restTemplate.exchange(
    url,
    HttpMethod.GET,
    entity,
    String.class);

服务器没有输入方法count()并打印此错误:

org.springframework.beans.TypeMismatchException:无法将类型'java.lang.String'的值转换为所需的类型'java.lang.Long';嵌套异常java.lang.NumberFormatException:对于输入字符串:"count"

变量url与之前在web浏览器中使用的变量完全相同。变量实体的格式也正确(事实上,如果我更改url,删除count部分,服务器会用适当的REST控制器正确响应)。

看起来Spring正试图将URL的计数部分解析为一个长值,我找不到位置和原因。

你知道为什么会发生这种事吗?

当我启动服务器时,日志包含这一行(因为它可能是一个有价值的信息):

2015-05-21 15:26:47,637信息[org.springframework.web.servlet.mvc.method.annotation.请求映射处理映射]-映射"{[/api/predios/count],方法=[GET],参数=[],标题=[],消费=[],产生=[文本/平原],自定义=[]}"到公共java.lang.字符串es.controllers.restful.PredioController.count(javax.servlet.http.HttpServlet响应)抛出java.lang.异常

共有1个答案

黄景胜
2023-03-14

您必须使用标题“Accept text/plain”配置REST模板。默认情况下,模板只使用“应用程序/json”,它不会映射到控制器。

 类似资料:
  • 问题内容: 我只是想知道如何使用PHP提取URL的最后一部分。 示例URL是: 现在如何使用PHP提取最后一部分? URL中始终有相同数量的变量,并且id始终在末尾。 问题答案: 您可以使用来匹配所需的URL部分。 在这种情况下,由于该模式很简单,因此我们正在寻找一个正斜杠(并且由于正斜杠表示正则表达式模式的开始和结束,因此我们必须对其进行转义),以及一个或多个数字()字符串()的末尾。圆括号用于

  • 问题内容: 我想从url解析查询部分,这是我要做的代码: 这段代码看起来不错,但是“ parse_qs”方法会丢失查​​询参数,例如“ param1”或“ param1 =”。我可以使用stantard库解析查询部分并保存所有参数吗? 问题答案: 你要:

  • 问题内容: 我有提供URL作为参数的REST客户端。但是我的云REST基础架构仅接受JSON格式。 有没有办法在Java中将URL参数转换(解析)为JSON格式? URL参数示例: 转换为JSON格式,例如: 问题答案: 解决方案 没有开箱即用的解决方案,因此开发一种解决方法最实用。 这是一个参数到JSON的转换器方法: 结果 方法输入: 方法返回输出:

  • 很抱歉标题不好,不知道该怎么写。无论如何,我正在使用ANTLR生成一个解析树。我正在尝试解析函数参数,这在某种程度上是可行的,但有一些事情我想更改,但我不确定如何更改。 这是我目前的设置: 这很好,很有效。但当我输入时说 它给我一个错误,一个我更愿意改变的结果。错误是它希望每个参数后面都有一个逗号,所以

  • ap.parseQueryString(queryString) 把 URL 中的 queryString 解析成一个对象。 参数说明 参数 类型 必填 描述 queryString String 否 可不填,默认解析window.location.search 返回值说明 类型 默认值 描述 Object {} queryString 解析结果。可配合 ap.pushWindow 等的 data

  • 问题内容: 我想在Java中使用斜杠(例如)来解析描述性网址。 我的总体想法是处理接收到的数据以在数据库中进行查找(因此使用URL作为搜索条件),然后返回包含数据的HTML页面。 我该怎么做呢? 问题答案: 您将拥有一个可以使用的字符串数组。