0

在 Play Framework (v 2.3.7) (scala 2.11.5) 中,我希望将调用传递给旋转模板,但在模板加载之前我无法计算参数。

用例是对表进行分页(带有约束和用户定义的搜索选项)。我想将一个调用传递给模板并让它“做数学”(就像我不喜欢在模板中“编程”一样——我选择将 HTML 生成排除在直接 scala 代码之外——还不确定这是否是一个伟大的决定......)

调用将与此类似:

@routes.AController.list(constraint.id, pageNumber, pageLength)

如果相关,参数是 Long、Int、Int。

我相信我需要的东西被称为部分功能?(我可能在这里离基地很远)

我如何通过这个说:

pagination.scala.html 

然后我将如何在旋转模板中调用它?

PS:我将完全形成的增强传递给模板没有问题——我只想从传递的参数中删除参数(这令人困惑......)并在稍后的时间生成这些参数。如果不这样做,我将不得不预先通过至少四个参数,这会很快变得丑陋。

当然,我希望使这个通用性足以可重用,但我认为一旦我了解了如何通过初始增强的机制,我就可以处理这个问题。

4

1 回答 1

0

我认为生成分页 URI 的最新时刻是您的视图,或者甚至是更好的控制器操作。请记住,Play 中的反向路由是类型保存的,因此您需要使用某种反射来从部分级别生成通用pagination.scala.html链接。

相反,您可以在控制器中准备让我们说 a Listof Strings 并将其传递给您的分页部分,这样它就可以在不知道 Call for given action 的情况下呈现典型的分页。

注意:我喜欢创建自己的PaginateUtil类,其中包含诸如 , 等这样的字段numberOfPagescurrentPage然后currentItems将其整个传递给视图,以使其中的操作尽可能小。

于 2015-04-21T15:52:05.807 回答