Custom attributes in UiBinder widgets

青春壹個敷衍的年華 提交于 2019-11-30 14:47:20

问题


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("placeholder", "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.


回答1:


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" />




回答2:


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


来源:https://stackoverflow.com/questions/3939490/custom-attributes-in-uibinder-widgets

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!