Play2.2为什么Assets.at在没有指定路径参数名的情况下无法编译?

时间:2013-10-31 18:05:28

标签: scala playframework-2.2

我在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模板引擎的一些未记录的要求吗?

1 个答案:

答案 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就不会有效。