質問

Uibinderで使用したInlinelabelサブクラスがあります。 WidgetをUibinderで使用できるように、Ginを介してPlacecontrollerを注入するにはどうすればよいですか? (UibinderにはNo-Argsコンストラクターが必要であることを思い出してください。)

それが不可能な場合、OnClick()イベント中にウィジェットで使用できるように、ウィジェットでPlaceControllerを使用できるようにする最もクリーンな方法は何ですか?

編集:

この場合、MVPが本当に最良の解決策であるかどうかはわかりません(しかし、あなたが私の考えを変えてくれてうれしいです。)

uibinder foo.ui.xmlファイルで宣言されているこれらのInlinelabelインスタンスの数十個があります。 MVPを実装した場合、これらのインスタンスのそれぞれを@Uifieldメンバーとして宣言することを意味します。私がそれらの多くを持っていると、それはかなり扱いにくいです。だからこそ、私は半自動化された方法でInlineLabelsのそれぞれにPlaceControllerを注入し、それらを手動でビューに配線することを避けることを望んでいました。

また、プレゼンターを各InlineLabelsに注入する方法があれば受け入れられます...その後、代表団は次のようなことをすることができます。

   public class MyInlineLabelSubclass {
       // ...

       public void onClick(ClickEvent event)
       {
         presenter.labelClicked(this);
       }
    }
役に立ちましたか?

解決

使用できます @UiHandler uibinder要素にハンドラーを追加するための注釈 @UiField 参照:

<ui:UiBinder>
  <g:InlineLabel ui:field="name"/>
  <g:InlineLabel ui:field="address"/>
  <g:InlineLabel ui:field="zipCode"/>
</ui:UiBinder>

そして、見解では:

@UiHandler({"name","address","zipCode"})
void onClick(ClickEvent event) {
  // Source will be one of the three InlineLabels.
  presenter.labelClicked(event.getSource());
}

ウィジェットにPlaceControllerに直接ハンドルを与えないでください - ビューのプレゼンターに委任します(コールバックまたはプレゼンターインターフェイスを介して)。見る http://code.google.com/webtoolkit/doc/latest/devguidemvpactivitivitiesandplaces.html#views

他のヒント

PlaceControllerが使用している名前のTokensからハイパーリンクが直接構築されたオンラインの例を見てきました。例えば。

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
  <ui:with type="com.gwtplatform.samples.nested.client.NameTokens" field="nameTokens"></ui:with>
  <g:HTMLPanel>
    <g:InlineHyperlink targetHistoryToken="{nameTokens.getHomePage}">Home</g:InlineHyperlink> | 
    <g:InlineHyperlink targetHistoryToken="{nameTokens.getAboutUsPage}">About Us</g:InlineHyperlink> | 
    <g:InlineHyperlink targetHistoryToken="{nameTokens.getContactPage}">Contact</g:InlineHyperlink>
  </g:HTMLPanel>
</ui:UiBinder>

この例の詳細については、こちらをご覧ください。

http://code.google.com/p/gwt-platform/wiki/simplenestedsample#step_3:_creating_a_custom_widget

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top