Ответ 1
Как создать пользовательский SearchBox
, который расширяет TextBox
с помощью метода setPlaceholder(String placeholder)
?
Тогда в UiBinder:
<custom:SearchBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />
Я использую GWT и UiBinder для своего приложения, и я пытаюсь это сделать
<g:TextBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />
Но пользовательский атрибут placeholder
не будет работать, потому что на TextBox
не существует метода setPlaceholder
- мне нужно:
searchBox.getElement().setAttribute("placeholder", "search");
обратно в код Java. Любые идеи о том, как это сделать в самом UiBinder? Полагаю, я могу изменить его на обычный элемент ввода и попытаться захватить ссылку и ее значение, но я бы предпочел не идти по этой дороге.
Как создать пользовательский 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);
}
}