使用scala的好奇错误springmvc注释

时间:2012-08-23 22:26:49

标签: scala spring-mvc

我认为你们其中一个非常聪明的scala人可能能够解释以下问题。

以下服务总是返回400(客户端发送的请求在语法上是不正确的()。) - springmvc中一个不太有用的错误,但通常在没有正确指定参数时发生。但是,如果我删除执行无映射的行,它就可以工作。此外,如果我创建一个引用param的本地val,然后映射它,它也可以工作。

@RequestMapping(value = Array("/willfail/{param}/"))  
def willFail(@PathVariable param:String):String={
    println("This line never even gets executed.")

    //Remove following line and it works.
    None.map(_ == param )

    //Whatever..
    "somepage"
}

这有点令人尴尬,因为我拖着所有人踢着scala尖叫,这是我感到有点内疚的第一个案例。

1 个答案:

答案 0 :(得分:1)

正如Biju Kunjummen正确指出的那样,它与从调试信息中重建参数名称有关。

出现None.map(_ == param ) scalac由于某种原因,将不同的参数名称(param$1而不是param)写入调试信息(您可以使用{{1}进行检查因此,Spring MVC不能将参数与路径变量相关联。

作为一种解决方法,您可以明确指定参数名称(javap -c -l),如果在没有调试信息的情况下进行编译,它也会使您的程序正常工作。

相关问题