LoginSignup
0
0

More than 1 year has passed since last update.

【JSF】inputタグでcsvを選択し中身一覧を表示した後、また別の次の画面に遷移したタイミングでファイルをアップロードしたい場合

Posted at

困ったこと

ファイル選択の際、ConversationScopedのPart型の変数に選択したファイルが入るようにして、
そのままcsvファイルの中の文字を取り出して一覧を表示するところまでは分かるが、
また別の画面に遷移したタイミングでファイルアップロードをしようと思って、
Part型の変数に格納されているデータを使ってアップロード処理をしようとしても、なぜか出来ない。ConversationScopedでも保持されているはずだが、とりあえずセッションのバッキングビーンのセッターに入れておいて、取り出そうとしてもInputStreamが使えない。

原因

ファイルの入出力はそのときの接続でしか有効ではないので、次の画面に遷移した時点でもう接続は切れていて、関係のないものになってしまう。
なので、たとえセッションのセッターにPart型のものをそのまま入れたとしても、意味が無い。

解決方法

2通りあります。

①tmpフォルダのようなものを作って、最初の段階でこっそりアップロードしておく。
そして、もしバリデーションやその他チェック処理があったとしたらそれを処理して、問題がないようであれば、tmpフォルダから本来のアップロード先へファイルを移動

②最初に読み込みがうまくいってるので、その読み込んだデータをListなどの変数に入れておいて、問題の次の画面に遷移するタイミングで、Listからデータを取り出して新規ファイルを作成しアップロードしたことにする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0