1

我在 Play 2.2 中有一些我无法解释的东西。所以我的“路由”文件中的以下行编译得很好:

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

4

1 回答 1

1

好吧,它与正则表达式路由的使用有关。简而言之,如果您使用的是标识符,那么您可以使用它。但是,如果您输入一个值,那么您需要为该值指定函数参数名称。为了解释它,看下面的场景:

POST     /:id                   controllers.Application.index(id)

使用index2(id),正则表达式从指定的 url 中提取id然后使用它。但是,如果您像您的情况一样传递一些默认值,那么约定是指定参数名称。

POST     /:id                   controllers.Application.index2(id,name="defaultName")

像上面一样,如果defaultName必须作为默认参数传递,那么您需要指定index2函数的参数名称(name在这种情况下)。

此约定用于将标识符(例如id在第一种情况下)与您指定的值区分开来。如果"defaultName"使用而不是name="defaultName"then 它在Int.

于 2013-10-31T18:48:21.237 回答