即时通讯使用GWT uibinder方法,我的html包含一个像
这样的文本框<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:idmw="urn:import:com.testing.wid.impl">
<g:HTMLPanel>
<table align="center" valign="center" height="25%">
<tr><td><g:TextBox ui:field='searchS' /></td></tr>
</table>
</g:HTMLPanel>
我怎样才能关闭此文本框的自动更正和自动投资? 我试过了
<g:TextBox ui:field='searchS' autocapitalize="off" autocorrect="off"/>
但是我得到了
[ERROR] Class TextBox has no appropriate setAutocorrect()
method Element <g:TextBox autocapitalize='off' autocorrect='off' ui:field='searchS'>
我可以做任何其他方式吗???
由于
答案 0 :(得分:3)
正如@Boris Brudnoy已经指出的那样,TextBox没有内置的方法。 Takin进一步提出他的建议,将其提取到新的自定义组件(以简化重用和支持)将是很好的:
com.app.shared.customcontrol
)添加新的CustomTextBox:
public class CustomTextBox extends TextBox {
public void setAutocomplete(String value){
this.getElement().setAttribute("autocomplete", value);
}
public void setAutocapitalize(String value){
this.getElement().setAttribute("autocapitalize", value);
}
}
使用UI绑定器声明新命名空间并使用您的组件:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:c="urn:import:com.app.shared.customcontrol">
<g:HTMLPanel ...>
<c:CustomTextBox ui:field="..." autocomplete="off" autocapitalize="off" />
</g:HTMLPanel>
</ui:UiBinder>
如果您想在系统范围内应用这些设置,可以通过构造函数来执行此操作:
public class CustomTextBox extends TextBox {
public CustomTextBox() {
this.getElement().setAttribute("autocomplete", "off");
this.getElement().setAttribute("autocapitalize", "off");
}
....
}
答案 1 :(得分:1)
由于GWT不会将UiBinder属性直接转换为HTML元素属性,因此您尝试过的内容将无效。相反,当您的错误消息提示时,它会查找格式set[UiBinder_attribute]
的窗口小部件设置器方法。由于the TextBox class中既没有setAutocorrect
也没有setAutocapitalize
方法,因此您可能会遇到错误。
你可以做的是放到元素级别并写下这样的东西,例如:在你的小部件的构造函数中:
public MyWidget() {
initWidget(uiBinder.createAndBindUi(this));
searchS.getElement().setProperty("autocapitalize", "off");
searchS.getElement().setProperty("autocorrect", "off");
}