2

我正在尝试将 Infoobjects 列表发送到我的控制器。我需要指定路由文件。我知道如何发送 int、string 和 long 作为参数,但是 List<> 呢?

我已经尝试过了,但它不起作用,我会收到一条错误消息,上面写着“未找到:键入 Infoobject ”。

GET    /generateExcel                  controllers.Application.generateExcel(list:List[Infoobject])

谢谢!

4

2 回答 2

3

首先,我认为您需要将对象的包放在列表的 [] 中:( List[path.of.your.package.Infoobject]您的路线中没有导入)。

无论如何,我认为您只能将字符串和数字放在 URL 中,以便将参数发送到您的控制器。

第一种解决方法:您可以创建一个QueryStringBindable将您的对象 ( List[Infoobject]) 绑定到字符串的方法,以便控制器将通过 URL 作为字符串发送的信息作为 List[Infoobject] 恢复。

第二种解决方法:您可以发送可以帮助您在控制器中重新创建列表的字符串(例如,如果您查询数据库,或者它是仅包含字符串属性的对象列表)

这是 QueryStringBindable 的 java 文档:http ://www.playframework.com/documentation/api/2.1.1/java/play/mvc/QueryStringBindable.html

于 2013-07-08T08:24:52.817 回答
0

路由不是传递复杂对象的最佳位置,而不是传递 a List(正如其他在答案/评论中指出的那样),您最好发送一个逗号分隔的数据库中持久化对象的 id 列表。请记住,在许多地方你可以碰壁,即。查询长度的限制或其他东西。

如果您不能/不想将它们保存在数据库中,您也可以使用缓存 API将整个列表存储在请求之间的内存中,因此您可以在 url 中发送缓存条目的 ID 作为通用String.

于 2013-07-08T10:31:51.807 回答