Ну, как правило, виджеты GWT генерируют свои собственные идентификаторы, которые автоматически становятся уникальными, и вы обычно не беспокоитесь о том, что это за идентификатор. Когда вы говорите, что устанавливаете идентификатор TextBox, я предполагаю, что вы вызываете что-то вроде myTextBox.getElement().setId("Navid")
.
Есть два простых метода, которые я могу придумать, в зависимости от вашего варианта использования. Класс HTMLPanel имеет статический метод createUniqueId (), который вы можете использовать как самостоятельно, так и для простого создания уникального идентификатора. Как myTextBox.getElemement().setId("Navid-" + HTMLPanel.createUniqueId())
. Единственная проблема заключается в том, что сгенерированный идентификатор не является детерминированным.
Другим распространенным методом будет генерирование идентификатора на основе идентификатора родительского виджета. myTextBox.getElement().setId("Navid-" + myTextBox.getParent().getElement().getId())
.
Тем не менее, я собираюсь сделать предположение и предположить, что причина, по которой вы хотите назначить свой собственный идентификатор для этого виджета, заключается в том, что вы можете обращаться к нему вне вашего кода GWT, из Javascript, например, из JQuery. В этом случае я бы порекомендовал вместо присвоения ему идентификатора (который должен быть уникальным, чтобы быть полезным) вместо назначения имени класса html элементу виджета. Затем вы должны обратиться к элементу виджета относительно идентификатора или класса идентификатора или класса вашего OrderItem. Вы можете добавить html-имя класса к элементу, как в примере myTextBox.getElement().addStyleName("navid")
Итак, предполагая, что вы присваиваете HTML-класс orderItemWidget корневому HTML-элементу вашего виджета OrderItem, а HTML-класс navid - TextBox, вы можете ссылаться на текстовое поле из JQuery с помощью селектора ".orderItemWidget .navid"