Wicket:创建在 TextBox 和 Label 之间交换的控件
Wicket: Create control that swaps between a TextBox and a Label
我有一个具有编辑状态和查看状态的面板。我需要一个基于面板状态在 TextField 和 Label 之间交换的控件。例如,在编辑状态下,Panel 将显示为 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" />
我也看过 ViewOrEdit control in visural-wicket,但我认为它不适用于 wicket:for。
您可以使用 Wicket Fragment 容器来完成此操作。在标记中定义两个片段,分别用于 input
和 span
。在 Java 代码中,根据您的条件添加具有不同第二个参数的 Fragment。 TextField 和 Label 应该共享相同的模型以显示相同的文本。
我有一个具有编辑状态和查看状态的面板。我需要一个基于面板状态在 TextField 和 Label 之间交换的控件。例如,在编辑状态下,Panel 将显示为 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" />
我也看过 ViewOrEdit control in visural-wicket,但我认为它不适用于 wicket:for。
您可以使用 Wicket Fragment 容器来完成此操作。在标记中定义两个片段,分别用于 input
和 span
。在 Java 代码中,根据您的条件添加具有不同第二个参数的 Fragment。 TextField 和 Label 应该共享相同的模型以显示相同的文本。