Struts 1.2.4 を使用して、この巨大なレガシー Java Web アプリを継承しました。ActionForms に関して具体的な質問があります。それらのいくつかは文字列プロパティのみ (数値の場合でも) を持ち、一部は一見適切な型 (整数、日付、文字列など) を使用します。ここでのベストプラクティスは何ですか?
また、プロパティが Integer 型で、ユーザーが入力した値が整数値でない場合、Struts は黙ってこれを飲み込み、プロパティを設定しないようです。これどうしたの?
Struts 1.2.4 を使用して、この巨大なレガシー Java Web アプリを継承しました。ActionForms に関して具体的な質問があります。それらのいくつかは文字列プロパティのみ (数値の場合でも) を持ち、一部は一見適切な型 (整数、日付、文字列など) を使用します。ここでのベストプラクティスは何ですか?
また、プロパティが Integer 型で、ユーザーが入力した値が整数値でない場合、Struts は黙ってこれを飲み込み、プロパティを設定しないようです。これどうしたの?
Struts 1.2x の場合、ユーザーが HTML フォームで値を入力または選択し、Struts HTML タグによって ActionForm インスタンスに自動的に入力されるプロパティは、文字列またはブール値である必要があります。ただし、ActionForm が、アプリケーションにとってより意味のある型 (Date など) としてプロパティを返す getter メソッドを持たない理由はありません。
自分で検証を行いたい場合 (または 1.2 以降の struts からリファクタリングされた struts バリデーター機能を使用する場合) は、まさにあなたが引用した理由で String プロパティが必要になります: Integer または int 値に数値を格納したら、それらは数値または「まったく何もない」のいずれかでなければなりません-そうでない場合:整数プロパティに「たくさん」(文字通り)どのように格納しましたか?
クライアント側の検証 (Javascript など) は引き続き機能しますが、これに依存する必要はありません。
無効な数値を入力したときに、ユーザーに空白のフィールドが表示されても問題ない場合は、Date-、Integer-、Whatever-Properties に値を格納できます。元の値をエラー メッセージとともに表示する場合は、String プロパティが必要です。
これには、手動で変換を行うために必要な価格があります。Struts 1.2 はかなり古いため、古い部分が十分に小さくなる (または重要でなくなる) まで、アプリケーション インフラストラクチャを徐々に最新のテクノロジに置き換え、2 つのテクノロジ (古いテクノロジと新しいテクノロジ) で同時に運用することを検討することをお勧めします。十分) ドロップします。
nb - 数値として受け入れたい値をより詳細に制御できます。古い Struts クレジットカード バンキング アプリケーションで、カードから 3e2 ユーロを引き出したい場合に期待される結果をマネージャーに尋ねたのを今でも覚えています。彼らは (Struts が変換したように) 300 とは言いませんでしたが、エラーを選択しました。