gpt4 book ai didi

java - 如何使 AjaxEditableLabel 显示 TextField?

转载 作者:行者123 更新时间:2023-11-30 07:32:47 25 4
gpt4 key购买 nike

我有一个 AjaxEditableLabel

AjaxEditableLabel<String> task = new AjaxEditableLabel<String>("task", new PropertyModel<String>(getModel(), "task"));

现在我要做的是在某些情况下此 AjaxEditableLabel 将呈现为 TextField。默认情况下,它呈现为 Label。如果模型 String 任务为空或空白,则 AjaxEditableLabel 将是 TextField 否则它将是 Label

这可能吗?

谢谢。

编辑:

AjaxEditableLabel<String> task = new AjaxEditableLabel<String>("task", new PropertyModel<String>(getModel(), "task")) {

private static final long serialVersionUID = 40L;

private TextField<String> editor;

protected FormComponent<String> newEditor(MarkupContainer parent, String componentId, IModel<String> model) {
editor = (TextField<String>) 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<String> model) {
Label label = (Label) super.newLabel(parent, componentId, model);
if (editor.isVisible()) {
label.setVisible(false);
}

return label;
}
};

最佳答案

如果您查看 AjaxEditableLabel,它有两种用于初始化编辑器/标签的方法:newEditornewLabel。在 newEditor 方法中,它默认将编辑器设置为不可见。覆盖这两个方法并添加自定义逻辑以根据模型值显示组件应该可以满足您的要求。

关于java - 如何使 AjaxEditableLabel 显示 TextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6303474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com