2012-03-12 13 views
0

UIの使用:バインダ。jQuery + GWTチェックボックスステータスの設定

チェックボックスは、次のように実装されています:

<div data-role="fieldcontain"> 
<fieldset data-role="controlgroup"> 
<input type="checkbox" ui:field="uniqueID" class="custom" /> 
<label for="uniqueID"><ui:text from="{res.text}"></ui:text></label> 
</fieldset> 
</div> 

そして checkboxNewsletter.setId("uniqueID");、残念ながらあなたは、UI設定することはできませんので。同時にフィールドとIDを。

私は

動作しませんでした
@UiField InputElement checkbox; 
checkbox.setChecked(true); 

でチェックボックスを設定しようとしました。だから、私はJSNIをjQuery-JSに直接アクセスしようとしました。

public static native void setCheckBoxStatus(String id, Boolean isChecked)/*-{ 
     $wnd.jQuery('input[name='+id+']').attr('checked', isChecked); 
}-*/; 

...これははるかに良く機能しませんでした。

誰でもこの問題を解決する方法がありますか? jQueryはGWTチェックボックスをオーバーライドしているようです。生成されたHTMLはちょっと奇妙で、2つのチェックボックス要素で構成されているようです。 jQueryオーバーレイを削除すると、元の(正しくチェックされた)要素が表示されます。

答えて

2

jQueryとGWTを混ぜることは悪い考えです! GWTでは、主にJavaコードをGWT DOM APIと連携して作業する必要があります。 IDとui:fieldをUIBinder経由で要素に設定することはできませんが、これは問題の根本的な原因ではありません。

ビュー用に用意したコードスニペットはコンパイルされません。 、メソッドの本体内で次に

@UiField 
CheckBox checkbox; 

チェックされた状態に設定します:あなたは、次のようにアノテーションでフィールドを指定する必要がありますあなたはjQueryを使ってGWTを使用している場合は

// setValue sets the checked state, true = checked, false = unchecked. 
checkbox.setValue(true); 
+0

setValueのは、基本的にsetCheckedと同じであるが、すでに当然の(チェックボックスなどれるinputElement)ことを試してみました。ここで問題となるのは、jQueryはGWTの内部チェックボックスをjQueryのHTML/CSSである程度オーバーライドしているようです。したがって、setValueメソッドは画面に正しく表示されません。 –

2

を、あなたが使用する必要がありますGWTQuery(http://code.google.com/p/gwtquery/)。これはjQueryの機能を包み込み、Javaコードで直接アクセスできます。しかし、これはUiBinderであなたを助けません。あなたのコードがbehingであなたにUiBinderサンプルメッセージxmlファイルと

@UiField 
CheckBox uniqueID; 

<g:CheckBox ui:field="uniqueID"></g:CheckBox> 

は、これはあなたがGWT UiBinderサンプルメッセージ付きのチェックボックスを定義する方法です。

eclipseを使用している場合は、デザイナーを使用して異なるネットワーキング要素をレイアウトにドラッグアンドドロップし、異なる要素を定義することができます。この記事では、UiBinderのさまざまな機能について説明します。

PS:あなたはあなたのチェックボックスを使って書くことができますinizialsationでチェックしたい場合:<g:CheckBox checked="true" ui:field="uniqueID"></g:CheckBox>

関連する問題