2017-08-23 5 views
0

Ich habe ein Panel, das einen Bearbeitungsstatus und einen Ansichtszustand hat. Ich brauche ein Steuerelement, das basierend auf dem Status des Bereichs zwischen TextField und Label wechselt. Im Bearbeitungsstatus würde das Panel beispielsweise als TextField angezeigt und das gleiche Feld würde als Label im Ansichtszustand angezeigt.Wicket: Erstellen Sie Steuerelement, das zwischen einem Textfeld und einem Label wechselt

Dies ist sehr ähnlich der AjaxEditableLabel, aber es ist nicht das Gleiche. Ich ändere mehrere Labels in meinem Formular gleichzeitig in TextFields.

Zusätzlich zum Austauschen von Steuerelementen möchte ich weiterhin die Vorteile von wicket:for nutzen. Hier ist ein vorgeschlagene Markup Beispiel:

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

Ich mag wäre in der Lage sein, weiterhin HTML hinzufügen, um die TextField- Attribute. Es wäre möglich, sie aus dem span-Tag in onComponentTag zu kopieren. Zum Beispiel:

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

... könnten die folgend im Bearbeitungsmodus machen:

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

Ich habe auch an den ViewOrEdit control in visural-wicket sehe, aber ich glaube nicht, es mit Schlupf funktioniert: für.

+1

Wissen Sie, TextField (und Familie) hat setEnable (false), das ist fast Label? –

+0

Ja, tat ich. Ich habe schon darüber nachgedacht, nur CSS zu verwenden, aber ich habe es nicht mit einem deaktivierten Feld kombiniert. Das ist hilfreich, aber ich denke nicht, dass es vollständig funktionieren wird. Ich muss eine Lösung für mehr als nur ein TextField implementieren. Ich brauche das gleiche für eine DropDownChoice und Radio-Buttons. Bei Optionsfeldern wird nur der ausgewählte Wert angezeigt. CSS-Tricks sind also nicht so einfach. – JeredM

Antwort

1

Sie können dies tun, indem Sie Wicket Fragment Container verwenden. Definieren Sie zwei Fragmente im Markup für die input bzw. die span. Fügen Sie im Java-Code Fragment mit verschiedenen zweiten Parametern hinzu, abhängig von Ihren Bedingungen. Das TextField und das Label sollten dasselbe Modell verwenden, um denselben Text anzuzeigen.

+0

Dieser Ansatz scheint dem ViewOrEdit-Steuerelement sehr ähnlich zu sein (Link steht in meiner Frage). Gibt es etwas anderes, das ich nicht verstehe? Außerdem habe ich ein dem ViewOrEdit-Steuerelement ähnliches Muster implementiert und festgestellt, dass der Austausch funktioniert und mein Etikett bei einem Fehler rot wird, aber mein erforderlicher Feldindikator fehlt. Es scheint, dass das ViewOrEdit-Steuerelement näher war, als ich dachte. – JeredM

+0

Das Problem mit meinem erforderlichen Feldindikator ist, dass ich für das TextField statt für das ViewOrEdit-Steuerelement die erforderliche Einstellung vorgenommen habe. – JeredM

Verwandte Themen