Frage

geerbt ich diesen gigantischen Vermächtnis Java-Web-App mit Struts 1.2.4. Ich habe eine konkrete Frage zu Action. Einige von ihnen haben nur String-Eigenschaften (auch für Zahlen), einige von ihnen verwenden, um die scheinbar entsprechenden Typen (Integer, Datum, String, etc.). Was ist die beste Praxis hier?

Auch scheint es, dass, wenn eine Eigenschaft vom Typ Integer ist, und der eingegebene Wert der Benutzer nicht ein Integer-Wert, Struts still schluckt diese und nicht gesetzt nicht nur die Eigenschaft. Was ist los mit diesem?

War es hilfreich?

Lösung

Für Struts 1.2x, Eigenschaften, wo der Benutzer eingibt oder wählt Werte auf dem HTML-Formular, und dass auf der Action Instanz bevölkern automatisch von den Struts HTML-Tags müssen Strings oder Boolesche Werte sein. Allerdings gibt es keinen Grund, warum Ihre Action nicht Getter-Methoden haben kann, die die Eigenschaften als sinnvolle Arten für Ihre Anwendung zurückkehren z Datum.

Andere Tipps

Wenn Sie einige Validierung selbst zu tun (oder die Streben Validator Funktionen nutzen, die später als 1,2 aus Streben Refactoring wurden) Sie Eigenschaften String benötigen genau der Grund, dass Sie zitieren: Wenn Sie numerische Werte in Integer speichern oder int-Werte, sie muss werden entweder Zahlen oder „nichts“ - sonst: wie bist du speichern „viel“ (wörtlich) in einer Integer-Eigenschaft

Client Side Validation (zum Beispiel in Javascript) würde immer noch funktionieren, aber Sie wollen nicht auf diese verlassen können.

Wenn - auf eine ungültige Nummer eingeben - Sie sind in Ordnung mit den Benutzern ein leeres Feld dargestellt werden, können Sie speichern Werte in Datum-, Integer-, was auch immer-Eigenschaften. Wenn Sie möchten, den ursprünglichen Wert mit der Fehlermeldung präsentieren, werden Sie die Eigenschaft String benötigen.

Dies hat den Preis, den Sie die Konvertierung manuell tun müssen. Wie Struts 1.2 ziemlich alt ist, könnten Sie nach und nach denken mag, dass Ihre Anwendungsinfrastruktur mit moderner Technologie zu ersetzen und eine Zeit lang gleichzeitig auf zwei Technologien (die alten und die neuen) arbeiten, bis der alte Teil klein genug bekommt (oder unwichtig genug) fallen gelassen werden.

nb - Sie auch mehr Kontrolle darüber, welche Werte Sie als Zahlen annehmen möchten. Ich erinnere mich noch an eine alte Struts Kredit-Banking-Anwendung, in der ich meinen Manager gefragt, was das erwartete Ergebnis ist, wenn Sie möchten, dass 3e2 Euro von Ihrer Karte entziehen. Sie haben nicht 300 sagen (wie Struts konvertiert), sondern entschied sich für einen Fehler.

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