Spring 异常:MethodArgumentTypeMismatchException

Mik*_*ike 3 spring exception

我遇到了我不明白的异常。我有一个控制器,它给我一个新闻对象,它出现在控制台中,所以获取实际的新闻对象不是问题,

@RequestMapping(value ="/viewonestatus/{id}")
public ModelAndView viewOneStatus(@PathVariable("id") Long id) {

    System.out.println("!!!!!! STATUSUPDATECONTROLLER: viewOneStatus : Empezamos con el ID del Anuncio: " + id);

    StatusUpdate status = statusUpdateService.get(id);

    ModelAndView modelAndView = new ModelAndView();
    System.out.println("!!!!!! STATUSUPDATECONTROLLER: viewOneStatus : Empezamos con el ID del Anuncio: " + status);

    modelAndView.getModel().put("status", status);

    modelAndView.setViewName("viewonestatus");

    return modelAndView;
}
Run Code Online (Sandbox Code Playgroud)

.... 但是当尝试执行 JSP 时,它给了我以下错误,即使 JSP 几乎是空的,例如....

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

hello world

Exception: Exception: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: &#034;viewonestatus&#034;
        Failed URL: http://localhost:8080/viewonestatus/viewonestatus
        Exception message: Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: &#034;viewonestatus&#034;
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助

Osk*_*icz 6

@RequestMapping(value ="/viewonestatus/{id}")
public ModelAndView viewOneStatus(@PathVariable("id") Long id)
Run Code Online (Sandbox Code Playgroud)

在这里,您声明了一个名为“id”的路径变量,并将其类型声明为 Long。接下来,您正在调用 url:

http://localhost:8080/viewonestatus/viewonestatus 
Run Code Online (Sandbox Code Playgroud)

第二个“viewonestatus”显然不是 Long 类型,这就是 spring 抛出异常的原因,因为它无法将“viewonestatus”转换为 Long

你的请求应该看起来像

http://localhost:8080/viewonestatus/12321
Run Code Online (Sandbox Code Playgroud)