使用UI: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:字段和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-elements。删除jQuery覆盖时,您可以看到原始(并且已正确检查)元素。
答案 0 :(得分:2)
混合使用jQuery和GWT是一个坏主意!使用GWT,您应该主要使用针对GWT DOM API的Java代码。你是对的,你不能通过UIBinder在元素上设置ID和ui:field
,但这不是你问题的根本原因。
您为视图提供的代码段无法编译。您需要使用注释指定一个字段,如下所示:
@UiField
CheckBox checkbox;
然后在方法体内设置检查状态:
// setValue sets the checked state, true = checked, false = unchecked.
checkbox.setValue(true);
答案 1 :(得分:2)
当您使用GWT和jQuery时,您应该使用GWTQuery(http://code.google.com/p/gwtquery/),它包含了jQuery的功能,您可以直接在您的jQuery中访问它java代码。但是这对UiBinder没有帮助。
这是您使用GWT UiBInder定义复选框的方式:
<g:CheckBox ui:field="uniqueID"></g:CheckBox>
你在uiBinder xml文件中的和
@UiField
CheckBox uniqueID;
你的代码behing。
如果您正在使用eclipse,则可以使用设计器拖放布局中的不同元素并定义不同的元素。本文介绍了UiBinder的不同功能。
PS:如果您希望在复选时检查复选框,可以写下:<g:CheckBox checked="true" ui:field="uniqueID"></g:CheckBox>