0
我有以下的抽象模型類春 - 混凝土模型的驗證,同時使用界面
public abstract class Thing {
private String id;
private String name;
...
}
3種模型類進行了擴展。我們稱他們爲搖滾,紙,剪刀。例如與紙:
public class Paper extends Thing {
private String paperFormat;
...
}
我現在有以下CRUD相關的接口來實現:
public interface ThingOperations {
public String addThingForm();
public String processAddThing(Thing thing, BindingResult result);
...
}
這裏,processAddThing()就是處理一個表單模型(addThingForm()初始化形式)。 現在讓我們來說說我想創建一個與每個具體類相關的控制器(RockController,PaperController和ScissorController)。 以PaperController爲例。
public class PaperController implements ThingOperations {
...
@Override
@RequestMapping(value="/processAddPaper", method=RequestMethod.POST)
public String processAddThing(@Valid Paper newPaper, BindingResult result){
...
}
...
}
你看到的問題是什麼:的processAddThing()
執行不上面的例子是正確的。根據接口規格,我應該使用Thing類作爲驗證的模型。但是如果我把@Valid
Thing newThing,我將無法將newThing作爲Paper實例,因此我將無法調用相應的Service和DAO Hibernate實現來創建新的Paper記錄。
如果我想在我的3個控制器上成功實現我的界面,並且仍然應用相關的@Valid annotation
,您認爲我應該怎麼做?