zoc*_*ana 5 controller scala routes playframework
好吧,我想把我的String param从下面的Play scala Route替换成我自己的对象,比如说"MyObject"
From GET /api/:id controllers.MyController.get(id: String)
To GET /api/:id controllers.MyController.get(id: MyOwnObject)
Run Code Online (Sandbox Code Playgroud)
任何关于如何做到这一点的想法将不胜感激.
使用PathBindable绑定路径中的参数而不是查询中的参数。绑定来自以逗号分隔的路径的 id 的示例实现(无错误处理):
public class CommaSeparatedIds implements PathBindable<CommaSeparatedIds> {
private List<Long> id;
@Override
public IdBinder bind(String key, String txt) {
if ("id".equals(key)) {
String[] split = txt.split(",");
id = new ArrayList<>(split.length + 1);
for (String s : split) {
long parseLong = Long.parseLong(s);
id.add(Long.valueOf(parseLong));
}
return this;
}
return null;
}
...
}
Run Code Online (Sandbox Code Playgroud)
示例路径:
/data/entity/1,2,3,4
Run Code Online (Sandbox Code Playgroud)
示例路线条目:
GET /data/entity/:id controllers.EntityController.process(id: CommaSeparatedIds)
Run Code Online (Sandbox Code Playgroud)