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から拡張する必要がありますか?