【问题标题】:Spring Exception: MethodArgumentTypeMismatchException春季异常:MethodArgumentTypeMismatchException
【发布时间】:2017-03-23 21:33:04
【问题描述】:

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

@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;

非常感谢您的帮助

【问题讨论】:

  • 网址看起来很奇怪。您正在使用viewonestatus 两次。你确定它不应该是 http://localhost:8080/viewonestatus/1212112 之类的吗??
  • 映射预计很长,您正在传递 /viewonestatus/viewonestatus

标签: spring exception


【解决方案1】:
@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

【讨论】:

  • 问题是我忘记将新的 jsp 包含到 Tiles.xml 中。感谢您的提示让我研究它。
【解决方案2】:

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

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

@Controller

代替

@RestController

就是这样。呃。

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2015-05-18
    • 2014-03-14
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多