在抽象父类上播放框架PathBindable

时间:2014-08-20 22:37:21

标签: java playframework-2.0 playframework-2.2

我正在使用Play 2.2.x with Java并尝试将继承与PathBindable一起使用。

假设我有一个抽象的父类“Vehicle”,其子类为“Car”和“Truck”(见下文)。我想在父类Vehicle上实现PathBindable。但是我似乎无法在我可以传递Car类型的变量作为URL参数的情况下工作。在尝试编译时,我收到错误:

[error] GET  /open-trunk/:car   controllers.CarThings.openTrunk(car: Car)
[error] /xxx/routes:xxx: No URL path binder found for type Car. Try to implement an implicit PathBindable for this type.

传递通用的Vehicle变量编译正常。

有没有人知道如何在不必将汽车作为车辆传递并使用控制器方法进行投射的情况下实现这一目标?


Vehicle.java

import play.mvc.PathBindable;
public abstract class Vehicle implements PathBindable<Vehicle> {
    .... // Overrides for bind, unbind & javascriptUnbind
}

Car.java

public class Car extends Vehicle {
    ....
    public void openUpTrunk() {
        ....
    }
}

Truck.java

public class Truck extends Vehicle {
    ....
}

路由

....
GET  /open-trunk/:car   controllers.CarThings.openTrunk(car: Car)
....

CarThings.java

public class CarThings extends Controller {
    public static openTrunk(Car car) {
        car.openUpTrunk();
        ....
    }
}

谢谢!

0 个答案:

没有答案