我将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扩展?
答案 0 :(得分:0)
简单方法
您可以将SafeHtmlRenderer
传递给EditTextCell
构造函数。因此渲染器可以渲染普通视图而不是使用其默认模板(正常< input>)。
也许更正式
看起来您的单元格在视图模式下与编辑模式不同,因此非EditTextCell类似乎是合适的。但无论如何,第一种方式似乎更容易......