UiBinder 小部件中的自定义属性

2022-09-03 13:35:40

我正在为我的应用程序使用GWT和UiBinder,我正在尝试这样做

<g:TextBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />

但是自定义属性不起作用,因为没有方法 - 我需要这个:placeholdersetPlaceholderTextBox

searchBox.getElement().setAttribute("placeholder", "search");

回到Java代码中。关于如何在UiBinder本身中执行此操作的任何想法?我想我可以把它改成一个普通的输入元素,并尝试获取一个引用及其值,但我宁愿不走这条路。


答案 1

创建使用方法扩展的自定义怎么样?SearchBoxTextBoxsetPlaceholder(String placeholder)

然后在UiBinder中:

<custom:SearchBox ui:field="searchBox" styleName="{style.searchBox}" placeholder="search" />


答案 2

在被问到这个问题大约一年后,我需要使用自定义属性(特别是占位符)。因此,我编写了以下扩展的自定义类,保留了GWT的所有底层功能,包括处理程序等。希望有人在他们的搜索中偶然发现这一点。:)TextFieldTextBoxTextBox

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);
  }
}

推荐