Frage

Ich habe ein Formular mit (im Moment) zwei Felder und senden Sie das folgende:

capture.id = 213
capture.description = DescriptionText

Das Zielobjekt ‚capture‘ ist unveränderlich, und ich möchte einen Typkonverter bieten beide Werte zu nehmen und den Konstruktor aufrufen. Was ich kann nicht scheinen zu tun ist von Typeconverter bekommen aufgerufen werden.

Wenn die Eingabe einfach:

capture = foo

Dann wird der Typ-Wandler genannt, aber offensichtlich ist dies nicht viel, ist es weg einen OGNL Delegierten der Rest der Rest des Typs Gespräch mit mir zu machen, vielleicht in einer Karte der Parameter übergeben?

Irgendwelche Ideen? Ist dies überhaupt möglich in struts2

Versionen: Streben 2.0.14 & OGNL 2.6.11

EDIT: Ich habe ein bisschen Lesung auf das getan und meinem nächsten Versuch schien mir ein guter Plan zu sein. Meine Theorie war, dass die Map-Syntax würde OGNL die Werte in eine Karte umwandeln und dann mit dieser Karte XConverter nennt es meinen Wert zu konvertieren.

capture[id] = 213
capture[description] = DescriptionText

Nein, das scheint nicht überhaupt keinen Unterschied machen.

War es hilfreich?

Lösung 2

Es scheint, die, dass die Antwort nicht Sie nicht, dass mit struts2 tun können.

Ich habe diese Frage auf der struts2 Mailing-Liste geschrieben und es scheint, dass es einfach nicht möglich ist, mehr Felder zu einem TypeConverter vorgelegt haben werden.

Die vorgeschlagene alternative Lösung ist mit Setter veränderbares Objekt haben und dann eine Form von ‚petify‘ Methode müssen alle zukünftigen Änderungen zu verhindern.

Für mein Projekt habe ich tatsächlich umgesetzt weitere Streben Interceptor meines benutzerdefinierten Parameter Bindungsverhalten zu implementieren.

Andere Tipps

So wie ich dies tat, war die folgende in der JSP haben:

<s:textfield name="capture" value="capture.id" />
<s:textfield name="capture" value="capture.description" />

In dem Typ-Wandler, die String [] Werte Parameter der ConvertFromString Methode werden beiden Werte enthalten brauchten eine neue unveränderliche Capture zu konstruieren. Vorausgesetzt, dass Sie mit dem Textfeld Ordnung konsistent sind (oder noch besser, es in einer Tag-Datei kapseln), können Sie die Indizes des Werte-Array verwenden zuverlässig das entsprechende Feld des Capture-Objekts zu erhalten.

Der eine seltsame Teil an diesem Ansatz ist, dass die ConvertToString Methode wirklich alles für dich nicht tun. Sie können entweder id oder Beschreibung zurückkehren (oder sie zusammen verketten), aber da Sie die Werte verwenden Attribut in der JSP, es spielt keine Rolle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top