JQuery + GWT установить статус флажка - PullRequest
0 голосов
/ 12 марта 2012

Использование пользовательского интерфейса: Binder.

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

<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: одновременно.

Я пытался установить флажки с

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

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Когда вы используете 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; 

в вашем коде behing.

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

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

2 голосов
/ 12 марта 2012

Смешивать 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);
...