GWT - 带密码列的可编辑CellTable

时间:2012-08-20 11:49:52

标签: gwt

我将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扩展?

1 个答案:

答案 0 :(得分:0)

简单方法

您可以将SafeHtmlRenderer传递给EditTextCell构造函数。因此渲染器可以渲染普通视图而不是使用其默认模板(正常< input>)。

也许更正式

看起来您的单元格在视图模式下与编辑模式不同,因此非EditTextCell类似乎是合适的。但无论如何,第一种方式似乎更容易......