我正在尝试将Infoobjects列表发送到我的控制器。我需要指定路由文件。 我知道如何发送int,string和long作为参数,但是如何使用List<>?
我已尝试过这个,但它无法正常工作,我会收到一条错误消息“ not found:type Infoobject ”。
GET /generateExcel controllers.Application.generateExcel(list:List[Infoobject])
谢谢!
答案 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
。