Вы должны реализовать свой собственный «композит». Чтобы «составить» «воздушную подсказку»/всплывающую подсказку с входными данными вашей формы.
Вот пример ui.xml для текстовой области с использованием Gwt-bootstrap. (Сделать то же самое в простом GWT несложно, если нет, я буду рад преобразовать этот пример).
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
<b:WellForm>
<b:Fieldset>
<b:ControlGroup>
<b:Label styleName="field_label" ui:field="label" />
<b:TextArea ui:field="myWidget"/>
<b:HelpInline ui:field="errorMessage" visible="false" />
</b:ControlGroup>
</b:Fieldset>
</b:WellForm>
Если под «выноской» вы подразумеваете «подсказку», то добавьте mouseOverHandler и mouseOutHandler для отображения/скрытия сообщения об ошибке (HelpInline здесь, но может быть любым виджетом), когда есть одно для отображения.
Если вы удовлетворены этим, вы должны реализовать некоторый механизм наследования, чтобы повторно использовать все вокруг этого тега.
<b:TextArea b:id="textArea" ui:field="textArea"/>
для всех видов виджетов.
Используя композит, вы можете повторно использовать одну строку для всех сообщений об ошибках («выноски» или что-то еще) для всех ваших виджетов ввода и легко переключаться между HelpInline, Label и т. д.
ИЗМЕНИТЬ
Пример кода с простым GWT
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HorizontalPanel ui:field="widgetContainer">
<g:Label styleName="field_label" ui:field="label" />
<g:TextArea ui:field="myWidget"/>
<g:Label ui:field="errorMessage" visible="false" />
</g:HorizontalPanel>
Я предлагаю использовать HorizontalPanel для отображения метки поля (ui:field="label"), самого поля ввода (ui:field="myWidget") и сообщения об ошибке (ui:field="errorMessage") в одной строке, но возможны и другие типы панелей, или вы можете использовать CSS для позиционирования элементов по своему усмотрению.
person
otonglet
schedule
12.08.2013