在Java Play Framework 2中进行路由,列出<>作为参数

时间:2013-07-08 07:40:55

标签: java playframework routes playframework-2.0

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

我已尝试过这个,但它无法正常工作,我会收到一条错误消息“ not found:type Infoobject ”。

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

无论如何,我认为你只能在URL中放入String和Numerals,以便向你的控制器发送参数。

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

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

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

答案 1 :(得分:0)

路由不是传递复杂对象的最佳位置,而不是传递List(如答案/注释中的其他指示),您可以通过发送逗号分隔的对象的id的列表来做得更好数据库。请记住,在许多地方你可以碰到墙壁,即。限制查询的长度或其他东西。

如果您不能/不想将它们保存在DB中,您也可以使用Cache API将整个列表存储在请求之间的内存中,这样您就可以在URL中发送ID缓存条目作为公共String