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;
}
};