开发者

Custom attributes in UiBinder widgets

开发者 https://www.devze.com 2023-01-20 05:43 出处:网络
I\'m using GWT and UiBinder for my app, and I\'m trying to do this <g:TextBox ui:field=\"searchBox\" styleName=\"{style.searchBox}\" placeholder=\"search\" />

I'm using GWT and UiBinder for my app, and I'm trying to do this

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

But the custom placeholder attribute won't work because there isn't a setPlaceholder method on TextBox - I need to this:

searchBox.getElement().setAttribute("plac开发者_C百科eholder", "search");

back in the java code. Any ideas on how to do this in UiBinder itself? I suppose I could change it over to a normal input element and try to grab a reference and its value, but I'd rather not go down that road.


What about creating custom SearchBox that extends TextBox with method setPlaceholder(String placeholder) ?

Then in UiBinder:

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


About a year after this was asked, I had a need to use custom attributes (placeholder, specifically). So I wrote the following custom TextField class that extends TextBox, leaving in tact all of the underlying functionality of a GWT TextBox including handlers and such. Hope someone stumbles upon this in their searches. :)

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

精彩评论

暂无评论...
验证码 换一张
取 消