Spring异常:MethodArgumentTypeMismatchException

时间:2017-03-23 21:33:04

标签: 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;
}

....但是当尝试执行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;

非常感谢你的帮助

2 个答案:

答案 0 :(得分:3)

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

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

http://localhost:8080/viewonestatus/viewonestatus 

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

你的要求应该是

http://localhost:8080/viewonestatus/12321

答案 1 :(得分:0)

好吧,这让我发疯了大约 1/2 小时。如果您使用的是 SpringBoot,这可能对您有所帮助。

我在控制器中意识到我正在使用

@Controller

代替

@RestController

就是这样。呃。