Пользовательские атрибуты в виджетах UiBinder
Я использую GWT и UiBinder для своего приложения, и я пытаюсь сделать это
<g:TextBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />
Но обычай placeholder
атрибут не будет работать, потому что нет setPlaceholder
метод на TextBox
- Мне нужно это:
searchBox.getElement().setAttribute("placeholder", "search");
вернуться в код Java. Любые идеи о том, как сделать это в самом UiBinder? Я полагаю, я мог бы изменить его на обычный элемент ввода и попытаться получить ссылку и ее значение, но я бы предпочел не идти по этому пути.
2 ответа
Как насчет создания пользовательских SearchBox
это расширяет TextBox
с методом setPlaceholder(String placeholder)
?
Тогда в UiBinder:
<custom:SearchBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />
Примерно через год после того, как об этом спросили, мне нужно было использовать пользовательские атрибуты (в частности, заполнитель). Поэтому я написал следующий обычай TextField
класс, который расширяется TextBox
оставляя в такте все основные функции GWT TextBox
в том числе обработчики и тому подобное. Надеюсь, что кто-то наткнется на это в своих поисках.:)
public class TextField extends TextBox {
String placeholder = "";
/**
* Creates an empty text box.
*/
public TextField() {}
/**
* Gets the current placeholder text for the text box.
*
* @return the current placeholder text
*/
public String getPlaceholder() {
return placeholder;
}
/**
* Sets the placeholder text displayed in the text box.
*
* @param placeholder the placeholder text
*/
public void setPlaceholder(String text) {
placeholder = (text != null ? text : "");
getElement().setPropertyString("placeholder", placeholder);
}
}