GroupSession
掲示板[スレッド新規作成]bbs070.jspを開いて、__doInit(map, bbsForm, req, res, con);が実行され、掲示板の内容を入力後、[スレッド新規作成確認]bbs070kn.jspへ移動後、戻るボタンで戻った時に、[スレッド新規作成確認]bbs070kn.jspで確認した内容が、掲示板[スレッド新規作成]bbs070.jspで再度表示されます。そこで呼ばれるのが、setInitData(bbs070Biz.java)public void setInitData(HttpServletRequest req, Bbs070Form form, Connection con,String appRoot, String tempDir)throws SQLException, IOException, IOToolsException {<snip>//スレッド情報を設定BbsBiz biz = new BbsBiz();BulletinDspModel bbsMdl = biz.getThreadData(con, form.getThreadSid());form.setBbs070title(bbsMdl.getBtiTitle());//スレッドの投稿情報を設定BulletinDspModel bbsWriteMdl = bbsBiz.getWriteData(con, form.getBbs080writeSid());form.setBbs070value(bbsWriteMdl.getBwiValue());<snip>まだH2 DatabaseEngineに登録してない状態であるにも関わらず。たとえば、BulletinDspModel getWriteDataが、DAOを使って読み込んでいます。まだ[スレッド新規作成確認]bbs070kn.jspの画面で[OK]していなく、public int insertThreadDataが実行されていないし、要はDB登録していないのに、どうして取得できているのか理解できないでいます。今回もアドバイスを頂けると助かります。 m(_ _)mprivate ActionForward __doConfirm<snip>saveToken(req);↑これもちょっと気になるけど。OS:WindowsXP Pro Sp3java:1.6.0_07Tomcat:5.5.27gsession2:2.1.3
> まだ[スレッド新規作成確認]bbs070kn.jspの画面で[OK]していなく、public int insertThreadData> が実行されていないし、要はDB登録していないのに、どうして取得できているのか理解できないでいます。> 今回もアドバイスを頂けると助かります。 m(_ _)mGSの入力で確認画面がある箇所は全てそうだと思いますが、入力画面の値を確認画面ではhtml:inputのhiddenで保持しています。戻るボタンで戻った場合、この保持した値を表示しています。strutsでは入力項目のパラメータ名と同名の値がリクエストに含まれている場合、その値を入力項目にセットします。そのため疑問の動作が可能となっています。> private ActionForward __doConfirm> <snip>> saveToken(req);> ↑> これもちょっと気になるけど。これは二重投稿を防止するための処理です。例えばスレッドを新規作成し、完了画面を表示したとします。その後でブラウザの戻るボタンをクリックした場合、ブラウザはスレッド新規作成時のリクエストをサーバへ送信するため、上記の処理がない場合は同じ内容が二重に登録されてしまいます。それを防止するために上記の処理が入っています。
アイスランド様 回答ありがとうございます。 情報引き継ぎについては詳しい解説をして頂いたおかげで理解することができました。理解するのに多少時間がかかりましたが(^^;; しかし、まだまだ判らない部分が多いために、機能追加の改造をしていくとTry &errorの繰り返しになっています。 それでも、理解できないときには、アドバイスのほど宜しくお願い致します。 今回は丁寧な回答本当にありがとうございました。m(__)m
TOP