4

私がやりたいことは、HTML 入力フィールドを 1 つのページに動的に追加することであり、それぞれが struts 配列プロパティの要素に対応しています。HTML ページに同じフィールドがいくつかあるとします。

< input type="file" name="myfile" />

フォームが送信されると、各フィールドが struts フォーム Bean の FormFile 配列の要素に対応するようにします。

FormFile [] myfile;

明らかに上記は機能しませんが、同等のことを行う方法を探しています。

編集:上記は、ファイルのアップロードと FormFile タイプのみでは機能しません。

それ以外の場合、配列要素は入力要素または html:text 要素のインスタンスに直感的にマップされます。では、私の質問をより具体的にするために、struts を使用してファイルの配列をアップロードできないのはなぜですか?

4

2 に答える 2

2

OK、これが「私にとってはうまくいく」解決策です:

まず、html/jsp ファイルで name 属性にインデックスを付ける必要があります。

ファイル 1: < input type="file" name="myfile[0]" />

ファイル 2: < input type="file" name="myfile[1]"/ >

ファイル 3: < input type="file" name="myfile[2]" />

Struts フォームの「キャッチ」は、FormFile 配列を初期化することです。この2つをやれば仕事がはかどります。実際に送信された要素の数に対して配列の長さをチェックするように注意してください。つまり、null 配列要素をチェックしてください。これは、ニーズに合わせて調整するための優れたベースラインを提供すると思います。質問の最後の編集で述べたように、 < html:text > または < input type="text" > 要素の場合、フォーム Bean でインデックス付きプロパティも配列初期化も必要ありません。理由はよくわかりません。apache commons プロジェクトの org.apache.commons.beanutils.PropertyUtilsBean クラスで少し調べました。興味のある人は、そのクラスの set*Property メソッドを見てください。

于 2009-06-16T16:05:37.503 に答える
1

探しているものは「インデックス付きプロパティ」と呼ばれます。私が説明できるよりも優れた「ハウツー」があるので、こちらをご覧ください。

于 2009-01-03T21:54:12.753 に答える