mem*_*und 2 mvp spring vaadin spring-boot vaadin4spring
我想创建以下简单的MVP架构:
查看类似于vaadin布局,组件和样式的类.非功能性.该意见应与当前ViewScope/SessionScope,所以我使用@UIScope的https://github.com/peholmst/vaadin4spring
演示者应该注入视图,在视图组件上注册侦听器,处理用户输入并委托给模型服务
问题:当我将视图注入演示者时,视图会重新创建,因此演示者和视图不在同一范围内.所以绑定不起作用.我可以改变什么来实现上述设计?
@VaadinComponent
@UIScope
public class LoginView {
//form fields, buttons
}
@Controller
public class LoginPresenter implements ClickListener {
@Autowired
private LoginView view;
@PostConstruct
public void bind() {
view.getLoginButton().addClickListener(this);
}
@Override
public void buttonClick(ClickEvent event) {
//validate input and login
}
}
Run Code Online (Sandbox Code Playgroud)
也许是这样的
public class LoginView {
@Autowired
public void initPresenter(LoginPresenter loginPresenter) {
loginPresenter.setLoginView(this);
loginPresenter.bind();
}
}
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class LoginPresenter {
private LoginView loginView;
public void bind() {
// ...
}
public LoginView getLoginView() {
return loginView;
}
public void setLoginView(LoginView loginView) {
this.loginView = loginView;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
例如,您可以解耦添加配置界面,但会增加一些复杂性
public interface View {
}
public interface Presenter {
void setView(View view);
void bind();
}
public interface ViewManager {
void configure(View view);
}
public class ViewSupport implements View {
@Autowired
private ViewManager viewManager;
@PostConstruct
public void init() {
viewManager.configure(this);
}
}
/**
* ViewManager that configure Presenters following
* the naming convention XXView->XXPresenter
*/
public class DefaultViewManager implements ViewManager {
@Autowired
private ApplicationContext applicationContext;
@Override
public void configure(View view) {
Presenter p = (Presenter) applicationContext.getBean(getPresenterName(view.getClass()));
p.setView(view);
p.bind();
}
protected String getPresenterName(Class<?> clazz) {
return StringUtils.uncapitalize(clazz.getSimpleName()).replace("View", "Presenter");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4978 次 |
| 最近记录: |