ファイルアップロードについて(その2)
間が空いてしまいましたが、調査結果を記述。
web.xmlには以下の記述をする。
Teeda - JSF meets DI and AOP -
※Doltengでプロジェクトを自動生成した場合は、記述されている。
次にファイルアップロードのソースについて
アップロードのサンプルとして以下のように実装
HTML(抜粋)
<form id="Form" enctype="multipart/form-data"> <input type="file" id="uploadedFile" /> <input type="submit" id="doUplode" value="アップロード" /> <br /> FileSize : <span id="fileSize"></span> <br /> FileName : <span id="fileName"></span> </form>
ここで、注目なのは
enctype="multipart/form-data"
の部分であり、自動生成されないため追記する。
次に、Pageクラス(抜粋)
public class FileUplodePage { public UploadedFile uploadedFile; // ファイルサイズ public Long fileSize; // ファイル名 public String fileName; public Class doUplode() { if(uploadedFile != null) { // アップロードしたファイルサイズを取得 fileSize = uploadedFile.getSize(); // アップロードしたファイル名を取得 fileName = uploadedFile.getName(); } return null; } }
ログは、以下の通り
2009-08-10 23:47:38,935 [http-8080-1] DEBUG org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT deployを開始します 2009-08-10 23:47:39,049 [http-8080-1] DEBUG org.seasar.framework.container.util.S2ContainerUtil - クラス(jp.co.fileup.web.FileUplodePage[fileUplodePage])のコンポーネント定義を登録します 2009-08-10 23:47:39,109 [http-8080-1] WARN org.seasar.framework.container.assembler.BindingTypeShouldDef - jp.co.fileup.web.FileUplodePage$$EnhancedByS2AOP$$126df42のプロパティ(uploadedFile)が見つからないので設定をスキップします 2009-08-10 23:47:39,114 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN jp.co.fileup.web.FileUplodePage#doUplode() 2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1249915590239/12, BranchId=] 2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1249915590239/12, BranchId=] 2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - END jp.co.fileup.web.FileUplodePage#doUplode() : null 2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN jp.co.fileup.web.FileUplodePage#prerender() 2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1249915590239/13, BranchId=] 2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1249915590239/13, BranchId=] 2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - END jp.co.fileup.web.FileUplodePage#prerender() : null 2009-08-10 23:47:39,198 [http-8080-1] DEBUG org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT deployを終了しました
これで動きました。
しかし、リファレンスには「enctype="multipart/form-data"」の追記は
書いてなかったような?
また、ログには「プロパティが見つからない」と出てたりでこれで本当に
いいのかどうかの確証がないです、すみません。
それ以前に書かなければいけないということを自分でまだ理解してない
時点で自分もまだまだだな・・・と感じております。
とりあえず、困っている方がいましたら参考にしてください。
以上