Wicket:创建在文本框和标签之间交换的控件

Wicket:创建在文本框和标签之间交换的控件,wicket,wicket-7,Wicket,Wicket 7,我有一个具有编辑状态和视图状态的面板。我需要一个控件,根据面板的状态在TextField和Label之间切换。例如,在编辑状态下,面板将显示为文本字段,而在视图状态下,同一字段将显示为标签 这与AjaxEditableLabel非常相似,但不同。我正在将表单中的多个标签同时更改为文本字段 除了交换控件之外,我还想继续利用wicket:for。下面是一个建议的标记示例: <label wicket:for="firstNm"><wicket:message key="firstN

我有一个具有编辑状态和视图状态的面板。我需要一个控件,根据面板的状态在TextField和Label之间切换。例如,在编辑状态下,面板将显示为文本字段,而在视图状态下,同一字段将显示为标签

这与AjaxEditableLabel非常相似,但不同。我正在将表单中的多个标签同时更改为文本字段

除了交换控件之外,我还想继续利用wicket:for。下面是一个建议的标记示例:

<label wicket:for="firstNm"><wicket:message key="firstNm" /></label><br />
<span wicket:id="firstNm"></span>

我希望能够继续向TextField添加HTML属性。可以从onComponentTag中的span标记复制它们。例如:

<span wicket:id="firstNm" maxlength="30"></span>

。。。无法在编辑模式下呈现以下内容:

<input type="text" maxlength="30" />


我还研究了,但我认为它不能用于wicket:for。

您可以使用wicket片段容器来实现这一点。在标记中定义两个片段,分别用于
输入
span
。在Java代码中,根据您的条件添加具有不同第二个参数的片段。TextField和标签应该共享同一个模型以显示相同的文本。

您知道吗,TextField(和family)有setEnable(false),这几乎就是标签?是的,我知道。我以前考虑过只使用CSS,但我没有将其与禁用字段结合使用。这是有帮助的,但我认为它不会完全起作用。我必须为不仅仅是一个文本字段实现一个解决方案。我需要一个下拉选择和单选按钮相同的东西。在单选按钮的情况下,只显示选定的值,因此CSS技巧没有那么简单。这种方法似乎非常接近ViewOrEdit控件(链接在我的问题中)。有什么我不理解的不同吗?此外,我还实现了一个类似于ViewOrEdit控件的模式,发现交换有效,并且我的标签在错误时变为红色,但缺少所需的字段指示器。ViewOrEdit控件似乎比我想象的更接近。我的必填字段指示器的问题是我在TextField而不是ViewOrEdit控件上设置了required。