Пользовательские атрибуты в виджетах 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);
  }
}
Другие вопросы по тегам