Wicket:创建在TextBox和Label之间交换的控件

时间:2017-08-23 21:36:25

标签: wicket wicket-7

我有一个具有编辑状态和视图状态的Panel。我需要一个控件,它根据Panel的状态在TextField和Label之间交换。例如,在编辑状态下,Panel将显示为TextField,同一字段将显示为处于视图状态的Label。

这与AjaxEditableLabel非常相似,但它不一样。我正在将表格中的多个标签同时更改为TextFields。

除了交换控件之外,我还想继续利用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。

1 个答案:

答案 0 :(得分:1)

您可以使用Wicket Fragment容器来完成此操作。在标记中定义两个片段,分别为inputspan。在Java代码中,根据您的条件添加具有不同第二个参数的Fragment。 TextField和Label应该共享相同的模型以显示相同的文本。