Custom attributes in UiBinder widgets
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);
}
}
精彩评论