ajax如何给label赋值,如何让AjaxEditableLabel显示TextField?

AjaxEditableLabel task = new AjaxEditableLabel("task", new PropertyModel(getModel(), "task"));

现在我所要做的是在一定条件下这个AjaxEditableLabel将呈现为TextField。默认情况下,它呈现为Label。如果模型String任务为空或空白,则AjaxEditableLabel将为TextField,否则将为Label。

可能吗?

谢谢。

编辑:

AjaxEditableLabel task = new AjaxEditableLabel("task", new PropertyModel(getModel(), "task")) {

private static final long serialVersionUID = 40L;

private TextField editor;

protected FormComponent newEditor(MarkupContainer parent, String componentId, IModel model) {

editor = (TextField) super.newEditor(parent, componentId, model);

Object modelObject = getDefaultModelObject();

if (modelObject == null || "".equals(modelObject)) {

editor.setVisible(true);

} else {

editor.setVisible(false);

}

return editor;

}

protected WebComponent newLabel(MarkupContainer parent, String componentId, IModel model) {

Label label = (Label) super.newLabel(parent, componentId, model);

if (editor.isVisible()) {

label.setVisible(false);

}

return label;

}

};