在我的Play 2.4.4项目中,我有一个视图模板,我想返回2个值,一个Long和一个String。
我有一个按钮,可以在我的控制器中调用适当的方法:
<p>
<a href="@controllers.routes.Orders.rollbackStatus(order.id, order.status.toString)"
class="btn">@Messages("orders.rollback")</a>
</p>
我的控制器中的方法调用模型对象上的函数:
def rollbackStatus(id: Long, status: String) = Action {
Order.demoteStatus(id, status)
Redirect(routes.Orders.list())
}
在我的路由文件中,我已经定义了HTTP方法,URI和控制器方法:
GET /orders/:id/:status controllers.Orders.rollbackStatus(id: Long, status: String)
当我按下按钮时,我收到以下消息:
不好请求 要求&#39; GET / orders / 3,PLACED&#39; [无法将参数id解析为Long:对于输入字符串:&#34; 3,PLACED&#34;]
我已成功以相同的方式传递单个值。
以下是为/ orders:
定义的其余路由GET /orders controllers.Orders.list
GET /orders/pickorder controllers.Orders.getOrder
GET /orders/:id controllers.Orders.show(id: Long)
GET /orders/:id/:status controllers.Orders.rollbackStatus(id: Long, status: String)
答案 0 :(得分:0)
我找到了答案,当您指定使用的第一个参数&#39; /:&#39;定义参数的名称。
所有后续参数仅用&#39; /&#39;分隔。
我相信这是因为&#39;:&#39;指定参数的开头但是Play文档
中并不清楚以下是更正后的路线列表,所有其他代码与问题中提供的代码相同:
GET /orders controllers.Orders.list
GET /orders/pickorder controllers.Orders.getOrder
GET /orders/:id controllers.Orders.show(id: Long)
GET /orders/:id/status controllers.Orders.rollbackStatus(id: Long, status: String)