6

Struts 1.2.4 を使用して、この巨大なレガシー Java Web アプリを継承しました。ActionForms に関して具体的な質問があります。それらのいくつかは文字列プロパティのみ (数値の場合でも) を持ち、一部は一見適切な型 (整数、日付、文字列など) を使用します。ここでのベストプラクティスは何ですか?

また、プロパティが Integer 型で、ユーザーが入力した値が整数値でない場合、Struts は黙ってこれを飲み込み、プロパティを設定しないようです。これどうしたの?

4

2 に答える 2

5

Struts 1.2x の場合、ユーザーが HTML フォームで値を入力または選択し、Struts HTML タグによって ActionForm インスタンスに自動的に入力されるプロパティは、文字列またはブール値である必要があります。ただし、ActionForm が、アプリケーションにとってより意味のある型 (Date など) としてプロパティを返す getter メソッドを持たない理由はありません。

于 2008-10-16T17:35:40.877 に答える
3

自分で検証を行いたい場合 (または 1.2 以降の struts からリファクタリングされた struts バリデーター機能を使用する場合) は、まさにあなたが引用した理由で String プロパティが必要になります: Integer または int 値に数値を格納したら、それらは数値または「まったく何もない」のいずれかでなければなりません-そうでない場合:整数プロパティに「たくさん」(文字通り)どのように格納しましたか?

クライアント側の検証 (Javascript など) は引き続き機能しますが、これに依存する必要はありません。

無効な数値を入力したときに、ユーザーに空白のフィールドが表示されても問題ない場合は、Date-、Integer-、Whatever-Properties に値を格納できます。元の値をエラー メッセージとともに表示する場合は、String プロパティが必要です。

これには、手動で変換を行うために必要な価格があります。Struts 1.2 はかなり古いため、古い部分が十分に小さくなる (または重要でなくなる) まで、アプリケーション インフラストラクチャを徐々に最新のテクノロジに置き換え、2 つのテクノロジ (古いテクノロジと新しいテクノロジ) で同時に運用することを検討することをお勧めします。十分) ドロップします。

nb - 数値として受け入れたい値をより詳細に制御できます。古い Struts クレジットカード バンキング アプリケーションで、カードから 3e2 ユーロを引き出したい場合に期待される結果をマネージャーに尋ねたのを今でも覚えています。彼らは (Struts が変換したように) 300 とは言いませんでしたが、エラーを選択しました。

于 2008-10-16T17:49:48.383 に答える