- 締切済み
複数画面を一括で読み込んで画面遷移
既存の古いシステムをJavaで再構築するプロジェクトに参加しているのですが、 Webアプリでは通常考えられない要件があがっていて困っています。 その要件とは、 「9画面分のHTMLを読み込んで、 ブラウザ上でサーバアクセスせずに画面遷移する」 というものです。 9画面には、それぞれsubmitボタンと画面移動ボタン付きの HTMLフォームが含まれ、 submitボタンを押すと9画面分の項目が送信される、というものです。 既存のシステムがそうなっているらしいのですが、 どのようにして上記要件を達成しているのかが分かりません。 既存のシステムの仕様がまったく分からない状態です。 そもそも上記のような要件は、WebアプリでなくVisual Basicなどの クライアントアプリの要件のような気がします。 Webアプリで実現しようと思ったら、DHTML+JavaScriptを使用することになると思いますが、 サーバ側のStrutsベースのフレームワークとの連携も考えないといけません。 こういった要件を経験した方はいらっしゃいませんか? 簡単なやり方や、実はこんなJavaScriptライブラリがある!など なんでも良いんで教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- simple-dev
- ベストアンサー率30% (3/10)
> 「9画面分のHTMLを読み込んで、 > ブラウザ上でサーバアクセスせずに画面遷移する」 なぜ、このような振る舞いが必要なのかわかりませんが、「既存の古いシステム」ということであれば、私の過去の経験では、 - クライアントが設置されている拠点によっては、細い回線でしかアクセスできないので、画面遷移のたびにサーバへのアクセスが発生することが好ましくない。 - 最初のHTMLのロードにある程度時間が掛かることは、ある程度許容する。 - 見かけ上は、画面が遷移しているかのようにしたい という背景があり、対応したことがあります。 そのときには、1枚のHTMLに全画面を配置し、アンカーを使って飛ばして、画面遷移しているように見せかける方法を使いました。 以上、ご参考になれば幸いです。
- pooth
- ベストアンサー率42% (24/56)
No.2で補足します。 レイヤー(DIVタグ)内に書いておいて表示、非表示をjavascriptで制御する、という方法が一般的だと思います。 まぁ、何にせよ 「要件を実現するアイデア」ではなく、 「既存のシステムの実装」を問題にしているのなら、 まず見せて貰う事が大事だと思います。 そうでないなら、問題の要件とは、明らかに実装の範囲だと思うので、 ・「真に必要な要件(ユーザー体験)は何なのか」 ・「それは実装要件として絶対なのか、絶対であるならば、それは何故か」 という視点で問い直すべきだと思います。
- pooth
- ベストアンサー率42% (24/56)
その「既存の古いシステム」の動作を見せてもらったら如何ですか? 権利関係でソースを見せてくれないことはあるかもしれませんが、実際に動いているもののデモなら問題ないと思います。 たぶん、それを見ればおおそよその実装は掴めると思います。 そうでない場合、 ・9画面の"画面"って何を指すか ・9画面のHTMLとは具体的に何か ・「サーバーアクセスせず」、とは本当にその通りに受け取っていいのか、Ajaxのようなものを言っているのか、はたまたフレーム内の再読み込みでそう見えているだけなのか、 など確認する必要がありますが、エンジニア以外の人(極端にスキルの低いエンジニアを含む)が相手の場合、システムの実装を言葉で確かめても大抵の場合、意味はありません。 9画面分の項目、はjavascriptの変数に持たせておけばsubmitで飛ばせますし、画面の切り替えは、document.write文を延々書いていればできそうな気がします。 Strutsベースのフレームワークとの連携は、 アクションが起点ですので submitやリンクのクリックなどのイベントを抑えていればそう難しいことは無いと思います。 ともあれ、推測を元に無理な絵(設計の青写真)を書くより、「確認事項」ということでペンディングしておいておいて、後で実物を見せてもらうように交渉することをお勧めします。
現役プログラマ兼SEです。 ちょっと発想を変えてみましょう。 1.9画面ある =>1つの情報が9つの部分に分かれている 2.それらの画面をサーバアクセスせずに遷移する =>9つの部分の一部を見せ、残りを隠す これで可能です。 javascript、タブなどで検索するとサンプルがいっぱい出てきます。 (さほど難しくないので、自分で作ってもいいと思います。) タブではない・・・と思われるかもしれませんが、見せ方の差だけです。 また見えていないだけで一つのウィンドウのフォームの中に9つの部品の全ての要素がありますから、submitすれば当然サーブレットに情報が渡ります。 strutsのActionFormでは9つの部分の全てのフォームの部品を用意するだけです。 これで可能ですが、「根本的にWebシステムとはどういったものか」をユーザやユーザと話している人に理解してもらったほうがいいです。 そうでないと、それ以上のやっかいな要求をされるおそれがあります。 この「見せる/隠す」を使うとツリーなんかも簡単にできます。
お礼
回答、ありがとうございます。 実は今回のプロジェクトは途中から参加しており、 基本設計がほぼ終わってる状態なんですね。 で、現場にきて驚いたのは、プロジェクトのメンバーがJavaやWebに関する 知識と経験がほとんど無い、という信じられない現実だったりします。 COBOLを使った汎用機系の経験がある程度です。 ※ちなみに、現行システムを作ったチームとは別です。 オブジェクト指向の導入なんて、夢のまた夢な感じです。 まあ、グチはこれくらいにして、 実現方法のイメージはつかめました。ありがとうございます。 Webシステムがどういったものかの理解は、 Javaも含めて教育していかないといけないな、と思っています。 今回のプロジェクトのサンプル画面をみましたが、どう考えても クライアント/サーバの案件だと私は判断してしまいます(悲)。 社内イントラ内でしか使わないようですし・・・ おっと、またグチってしまった。
お礼
回答、ありがとうございます。 とりあえず今、現行システムを作ったチームに問い合わせています。 今回のプロジェクトの状況は、No.1の回答に書いたような状況なので、 これからもいろんな苦労がありそうです。