我认为你们其中一个非常聪明的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尖叫,这是我感到有点内疚的第一个案例。
答案 0 :(得分:1)
正如Biju Kunjummen正确指出的那样,它与从调试信息中重建参数名称有关。
出现None.map(_ == param )
scalac
由于某种原因,将不同的参数名称(param$1
而不是param
)写入调试信息(您可以使用{{1}进行检查因此,Spring MVC不能将参数与路径变量相关联。
作为一种解决方法,您可以明确指定参数名称(javap -c -l
),如果在没有调试信息的情况下进行编译,它也会使您的程序正常工作。