【问题标题】:Update a view in GWT在 GWT 中更新视图
【发布时间】:2013-11-11 14:52:01
【问题描述】:

我是 GWT 的新手,在尝试更新视图时遇到了一些麻烦。我正在尝试基于 MVP 模式进行编码,所以我有这两个类 TempPresenter 和 TempViewer。加载此 UI (TempViewer.ui.xml) 后,我想在用户单击 submitButton 时向此显示添加一个新面板:

<g:HTMLPanel ui:field="temp">
<div align="center">
    <g:HorizontalPanel>
        <g:VerticalPanel>
            <g:Label text="X data"/>
            <g:TextArea ui:field="xData" visibleLines="10"/>
        </g:VerticalPanel>
    </g:HorizontalPanel>

    <g:Button ui:field="submitButton" text="Submit" />
    <g:VerticalPanel ui:field="newPanel" />
</div>
</g:HTMLPanel>

所以,我在 TempView 中写了这些行:

// TempView.java
...
@UiField
VerticalPanel verticalPanel;

public void setVerticalPanel(VerticalPanel v) {
    this.verticalPanel = v;
}
...
@UiHandler("submitButton")
public void onSubmitButtonClick(ClickEvent event){
    presenter.onSubmitButtonClicked(event);
}
...

以及 TempPresenter 中的这些行:

// TempPresenter.java
...
public void onSubmitButtonClicked(ClickEvent event) {
    VerticalPanel panel = new VerticalPanel();
    panel.add(new Label("newLabel"));

    view.setVerticalPanel(panel);

    ...
}

当我运行这个程序时,我没有收到任何错误,一切正常。但是,当我单击 submitButton 时,没有任何变化。到现在为止我犯错了吗?或者无法使用这种方式更新视图。那么,我该如何更新呢?

【问题讨论】:

    标签: gwt mvp uibinder gwt-mvp


    【解决方案1】:

    试试

    <g:HTMLPanel ui:field="temp">
    <div align="center">
        <g:HorizontalPanel ui:field="hPanel"/>
    
        <g:Button ui:field="submitButton" text="Submit" />
        <g:VerticalPanel ui:field="newPanel" />
    </div>
    </g:HTMLPanel>
    

    // TempView.java
    ...
    @UiField
    HorizontalPanel hPanel;
    
    public void setVerticalPanel(VerticalPanel v) {
        hPanel.add(v);
    }
    

    或者调用前在视图构造函数中设置面板

    initWidget(uiBinder.createAndBindUi(this));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2013-02-28
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多