美文网首页
GWTP核心 The base: PresenterWidget

GWTP核心 The base: PresenterWidget

作者: 蒲印MkII | 来源:发表于2018-05-03 10:47 被阅读0次

    当UI组件需要跨应用程序多次重用时,GWT小部件很有用。

    GWTP的PresenterWidget是一个利用常规GWT Widgets功能的强大工具,因为它可以很好地分离您的UI组件。

    应用程序通常包含复杂的UI小部件,有时这些元素非常复杂,以至于最好将应用程序逻辑与UI逻辑分开。这是它来得方便的地方。

    SimplePresenter.java

    public class SimplePresenter extends PresenterWidget<SimplePresenter.MyView> {
        interface MyView extends View {
            void displayCurrentUserName(String username);
        }
    
        private final CurrentUserService currentUserService;
    
        @Inject
        SimplePresenter(EventBus eventBus,
                        MyView view,
                        CurrentUserService currentUserService) {
            super(eventBus, view);
    
            this.currentUserService = currentUserService;
        }
    
        @Override
        public void onBind() {
            getView.displayCurrentUserName(currentUserService.getCurrentUsername());
        }
    }
    

    SimpleViewImpl.java

    public class SimpleViewImpl extends ViewImpl implements SimplePresenter.MyView {
        interface Binder extends UiBinder<HTMLPanel, SimpleView> {
        }
    
        @UiField
        SpanElement username;
    
        @Inject
        SimpleView(Binder binder) {
            initWidget(binder.createAndBindUi(this));
        }
        
        public void displayCurrentUserName(String username) {
            this.username.setText(username);
        }
    }
    

    SimpleViewImpl.ui.xml

    ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
            xmlns:g='urn:import:com.google.gwt.user.client.ui'>
        <g:HTMLPanel>
            Current user's name: <span ui:field="username"></span>
        </g:HTMLPanel>
    </ui:UiBinder>
    

    如前所述,SimplePresenter与其视图实现松散耦合,因为它告诉做什么而不是如何去做。
    这样做可能会让开发人员为同一个presenter实现多个view;presenter知道该怎么做,并且多个view分别处理其请求。

    相关文章

      网友评论

          本文标题:GWTP核心 The base: PresenterWidget

          本文链接:https://www.haomeiwen.com/subject/cldkrftx.html