2

私は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'> 

これを行う他の方法はありますか?

ありがとう

4

2 に答える 2

3

すでに@Boris Brudnoyが指摘しているように、TextBoxでそれを行う組み込みの方法はありません。彼の提案をさらに取り入れて、これを新しいカスタムコンポーネントに抽出するとよいでしょう (再利用とサポートを簡素化するため):

  1. 新しいパッケージを追加 (例com.app.shared.customcontrol)
  2. 新しい 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);
        }
    }
    
  3. 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");
    }

    ....
}
于 2013-04-15T16:15:31.380 に答える