在很多情況下,我有相同的面板編輯一組屬性,這些屬性是不同的DTO共有的。 所以我想有這樣的面板只定義一次和重用,所以我想出了以下實施其中之一:GWT編輯器框架,如何實現編輯器的有效重用
public class IdentificationPanel<M> extends Panel implements Editor<M> {
BusinessUnitField businessUnit;
OperationCodeField operationCode;
OperationNumber operationNumber;
...........
}
所以我會用IdentificationPanel與根據我需要的型號不同的DTO編輯。 比如我有:
public class ExampleTrans01 extends ModelDTO {
private ExampleTrans01Header header;
.......
}
public class ExampleTrans02 extends ModelDTO {
private ExampleTrans02Header header;
.....
}
public class ExampleTrans01Header extends ModelDTO {
private Integer businessUnit;
private String operationCode;
private Long operationNumber;
.......
// Setters & Getters
}
public class ExampleTrans02Header extends ModelDTO {
private Integer businessUnit;
private String operationCode;
private Long operationNumber;
.......
// Setters & Getters
}
所以編輯爲2班,我需要編輯的實施,我將有:
public class ExampleTrans01Editor extends Panel implements Editor<ExampleTrans01> {
@Path("header")
IdentificationPanel<ExampleTrans01Header> identification;
.......
}
public class ExampleTrans02Editor extends Panel implements Editor<ExampleTrans02> {
@Path("header")
IdentificationPanel<ExampleTrans02Header> identification;
........
}
當我嘗試編譯此,GWT抱怨,因爲它說當IdentificationPanel_businessUnit_Context類生成Delegate時,沒有類ExampleTrans02Header作爲父類的構造函數。
我知道我也許擺脫問題通過擴展IdentificationPanel,如:
public class ExampleTrans01Identification extends IdentificationPanel<ExampleTrans01Header> {
// Nothing interesting to do here
}
public class ExampleTrans02Identification extends IdentificationPanel<ExampleTrans02Header> {
// Nothing interesting to do here
}
然後使用這個類來代替參數,但是這種解決方案似乎是有點討厭,因爲這些類不會有任何其他用途。
所以問題是,有沒有其他的方式來實現這種情況?我想知道這應該是一個非常常見的用例,但我無法找到關於它的更多信息。
在旁註中,我可能會說我是編輯器框架的新手,所以也許我正在解釋錯誤的東西,如果能讓我走向正確的方向,我會很感激。
問候, 丹尼爾
感謝您的回答托馬斯,希望這可以很快解決! –
應該包含在GWT 2.5中,在季度結束之前發佈(閱讀:適用於Google I/O) –