0

1つの列にパスワードが設定されたCellTableがあります。パスワード列を編集可能にしたい。

私のコードは次のようなものです

public class EditPasswordTextCell extends EditTextCell {


    @Override
    protected void edit(Context context, Element parent, String value) {
        setValue(context, parent, value);
        InputElement input = getInputElement(parent);
        input.setAttribute("type", "password"); //$NON-NLS-1$ //$NON-NLS-2$
        input.focus();
        input.select();
    }
}

これにより、セルをクリックするとパスワードボックスが表示されます。ただし、編集が終了すると、列に表示される値はプレーンテキストになります。次に、レンダラーメソッドをオーバーライドすることにしました。しかし、EditTextCellクラスのほとんどのメソッドはプライベートであるため、オーバーライドすることになりました

@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
    value = "******"; //$NON-NLS-1$
    super.render(context, value, sb);
}

上記のコードは、最初のレンダリングでは正常に機能し、後続のレンダリングでは機能しません。

ここで質問が発生します。EditTextCellまたはAbstractEditableCellから拡張する必要がありますか?

4

1 に答える 1

0

簡単な方法

コンストラクターに aSafeHtmlRendererを渡すことができます。EditTextCellそのため、レンダラーはデフォルトのテンプレート (通常の <input>) を使用する代わりに、通常のビューをレンダリングできます。

たぶんもっとフォーマル

ビュー モードと編集モードではセルが異なるように見えるため、EditTextCell 以外のクラスが適切なようです。とにかく、最初の方法は簡単に思えます...

于 2012-08-20T12:01:42.630 に答える