gwtエディターフレームワークを使用してgwtのフォームをバインドしています。フォームを正常にバインドできましたが、問題は、あまりにも多くのコードを記述する必要があることです。ジェネリックを使用するとコードが短くなると思いますが、できませんでした。
のコードEditVendorWorkflow
はほぼ同じですが、唯一の違いはこの2行です
interface Driver extends SimpleBeanEditorDriver<Vendor, VendorEditor>{}
private VendorEditor editor;
例、私が書く場合PersonEditor
、対応するEditPersonWorkflow
コードは
interface Driver extends SimpleBeanEditorDriver<Person, PersonEditor>{}
private PersonEditor editor;
つまり、基本的に繰り返しがあります。
どんな助けでもかなりです。
public class EditVendorWorkflow{
interface Driver extends SimpleBeanEditorDriver<Vendor, VendorEditor>{}
Driver driver = GWT.create(Driver.class);
private VendorEditor editor;
void edit(Vendor p) {
driver.initialize(editor);
driver.edit(p);
}
void save() {
Vendor edited = driver.flush();
//doSomethingWithEditedVendor(edited);
}
public void initialize(VendorEditor editor) {
this.editor = editor;
}
}
public class VendorEditor extends Composite implements Editor<Vendor> {
private static VendorEditorUiBinder uiBinder = GWT
.create(VendorEditorUiBinder.class);
@UiField Button save;
@UiField TextBox address;
@UiField TextBox contactName;
@UiField ValueBoxEditorDecorator<String> contactMobileNo;
@Path("department.name")
@UiField TextBox deptName;
interface VendorEditorUiBinder extends UiBinder<Widget, VendorEditor> {
}
private final EditVendorWorkflow vendorDriver;
public VendorEditor(Vendor p) {
initWidget(uiBinder.createAndBindUi(this));
vendorDriver = GWT.create(EditVendorWorkflow.class);
vendorDriver.initialize(this);
vendorDriver.edit(p);
}
@UiHandler("save")
void onSaveClick(ClickEvent event) {
vendorDriver.save();
}
}