2012-03-12 3 views
0

Использование пользовательского интерфейса: Binder.jQuery + GWT set checkbox status

Флажки реализованы следующим образом:

<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 выглядит странно и, кажется, состоит из двух элементов checkbox. Вы можете увидеть оригинальный (и правильно проверенный) элемент при удалении наложения jQuery.

ответ

2

Смешивание jQuery и GWT - плохая идея! С GWT вы должны, прежде всего, работать с кодом Java с API-интерфейсами GWT DOM. Вы правы, что вы не можете установить идентификатор и ui:field на элементе через UIBinder, но это не является основной причиной вашей проблемы.

Фрагмент кода, который вы предоставили для своего вида, не будет компилироваться. Вам нужно указать поле с примечанием следующим образом:

@UiField 
CheckBox checkbox; 

Тогда в теле метода, установите проверенное состояние:

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

SetValue в основном такая же, как setChecked, уже пробовал (CheckBox, а также InputElement) конечно. Проблема здесь в том, что jQuery вроде бы переопределяет внутренние флажки GWT с помощью HTML/CSS jQuery. Следовательно, методы setValue не будут отображаться должным образом на экране. –

2

При использовании GWT с JQuery, вы должны использовать GWTQuery (http://code.google.com/p/gwtquery/), который обертывает функции jQuery, и вы можете получить к нему доступ непосредственно в вашем Java-коде. Однако это не поможет вам с UiBinder.

Это, как вы определяете флажок с GWT UiBinder:

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

в вас UiBinder файл XML и

@UiField 
CheckBox uniqueID; 

в вас код опережать.

Если вы используете eclipse, вы можете использовать конструктор для перетаскивания элементов differnet в вашем макете и определения различных элементов togehter. В этой статье описываются различные функции UiBinder.

PS: если вы хотите, чтобы ваш флажок будет проверить на inizialsation вы можете написать: <g:CheckBox checked="true" ui:field="uniqueID"></g:CheckBox>

 Смежные вопросы

  • Нет связанных вопросов^_^