我在 Wicket 中有一个包含表单的页面,该表单需要合作者才能完成工作。协作者被注入(我正在使用 Guice)并且看起来像:
public class RegistrationPage extends WebPage {
@Inject
public RegistrationPage(RegistrationService service) {
this.service = service;
add(new RegistrationForm());
}
private class RegistrationForm extends Form {
public RegistrationForm() {
// setup
}
protected void onSubmit() {
service.doSomething();
}
}
}
我不喜欢将 RegistrationService 注入到 RegistrationPage 中的想法,而只有 RegistrationForm 需要它。我可以更改 RegistrationForm 以接收 RegistrationService:
public RegistrationForm(RegistrationService service) {
this.service = service;
}
并从 RegistrationPage 中删除该字段,但 RegistrationPage 仍用于传递。
我想我要问的是这样做的最佳做法是什么?这样做可以吗,或者将 RegistrationForm 本身注入页面可能会更好:
public class RegistrationPage extends WebPage {
@Inject
public RegistrationPage(RegistrationForm form) {
add(form);
}
}
---
private class RegistrationForm extends Form {
private RegistrationService service;
@Inject
public RegistrationForm(RegistrationService service) {
this.service = service;
}
protected void onSubmit() {
service.doSomething();
}
}
我更喜欢这个,因为我希望将 RegistrationForm 放在单独的类/文件中。我对 Wicket 很陌生,所以不确定规范是什么——有人可以给我指路明灯吗?:)