我在Play 2.2中有一些我无法解释的内容。
所以我的“routes”文件中的以下行编译得很好:
GET /css/*file controllers.Assets.at(path="/public/stylesheets", file)
但是当我从那里删除“path =”部分时
GET /css/*file controllers.Assets.at("/public/stylesheets", file)
我在控制台中看到以下错误:
)' expected but
“'在第9行的C:\ Workspace \ Private \ Play \ bubusik \ conf \ routes中找到。
所以我想知道是否需要在at()函数中明确提供参数的名称?是Play模板引擎的一些未记录的要求吗?
答案 0 :(得分:1)
它与正则表达式路由的使用有关。简而言之,如果您使用标识符,则可以使用它。但是,如果输入值,则需要为该值指定函数参数名称。要解释一下,请看下面的场景:
POST /:id controllers.Application.index(id)
使用index2(id)
,正则表达式从指定的网址中提取id
,然后使用它。但是如果您要传递一些默认值,那么约定是指定参数名称。
POST /:id controllers.Application.index2(id,name="defaultName")
如上所述,如果必须将defaultName
作为默认参数传递,则需要指定index2
函数的参数名称(在这种情况下为name
)。
此约定用于区分标识符(在第一种情况下为ex id
)与您指定的值。如果使用的是"defaultName"
而不是name="defaultName"
,那么Int
就不会有效。