- - PR -
scope="session"でJSPで表示ができません
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-12 23:55
こんにちは初めましてkaniです。
JAVAの初心者なのですがJSPのことで質問です。 環境は ---------- Win2000pro MS-Access2000(JDBC→ODBC) TOMCAT 5 j2sdk1.4.2 ---------- こんな感じでMVC設計でIDを入力すると検索して該当者を表示 と、簡単なものを作りましたが。 JSPよりJavaBeanClassのプロパティーが正しく表示されません。 <jsp:useBean id="testbean" scope="session" class="packkan.BeanSQLTest"/> scope="session"にすると違うHTMLを吐き出しているようです。 scope="request"にするとプロパテティーは値なしですが HTMLは吐き出されます。 しかし、JavaBeanClassはテスト用のJAVAアプリケーションから たたくと正常に値を返してくれるのです。なのでJavaBeanClassには問題ないと思うのですが もちろんAccessDBにも値は入っているしJAVAアプリケーションからちゃんと 取り出せています。 以下にservletコントロールのJSP呼び出し部分とJSPを貼り付けておきます。 ほかに何かあれば貼り付けます。 説明が下手ですいませんがヒント、解決法があればよろしくお願いします。 /*JSP呼び出し*/ //ViewであるJSPを呼び出す HttpSession session = request.getSession(true); session.setAttribute("testbean",testbean); getServletContext().getRequestDispatcher("/JspKanTest.jsp").forward(request, response); ----------------- 以下はJSPソースコードです。 <html> <head> <title>JSP-出力結果</title> </head> <body> <center> <!-- /* コンテンツタイプの設定 */ --> <%@ page contentType="text/html; charset=Shift_JIS" %> <!-- /* Javabeanを参照 */ --> <jsp:useBean id="testbean" scope="session" class="packkan.BeanSQLTest"/> <!-- /* 結果出力 */ --> <div align="center"><h4>検索結果 出力</h4></div> <!-- /*結果表示*/ --> <Table> <tr> <th>検索対象IDは:</th><td><jsp:getProperty name="testbean" property="ID" />です。</td> </tr> <tr> <th>名前は:</th><td><jsp:getProperty name="testbean" property="NAME" />です。</td> </tr> <tr> <th>性別は:</th><td><jsp:getProperty name="testbean" property="SEX" />です。</td> </tr> </table> <br>検索終了 </center> </body> </html> | ||||||||||||
|
投稿日時: 2003-12-13 00:47
>scope="session"にすると違うHTMLを吐き出しているようです。
これは期待していない値が表示されるということですか? >scope="request"にするとプロパテティーは値なしですが >HTMLは吐き出されます。 値なしとは、null または 空白 といった意味でしょうか? | ||||||||||||
|
投稿日時: 2003-12-13 01:02
>>scope="session"にすると違うHTMLを吐き出しているようです。
>これは期待していない値が表示されるということですか? 期待していない値ではなく、違うHTML(雛形みたいな)がはき出されます。 これはエラーなので違うJSPが呼ばれているのでしょうか?。。。。 >>scope="request"にするとプロパティーは値なしですが >>HTMLは吐き出されます。 >値なしとは、null または 空白 といった意味でしょうか? String値にはnullがintには0が入っています。 この場合はJspKanTest.jsp(目的のJSP)がきちんと呼ばれHTMLがはき出されます。 | ||||||||||||
|
投稿日時: 2003-12-13 03:07
とりあえず、sessionにちゃんとオブジェクトが入っているのか確認することを
お勧めします。 たとえばこんなの↓を<%@ page 〜 の下に追加するなど <%@ page session="true" %> <%@ page import="packkan.*" %> <% BeanSQLTest testbean = session.getAttribute("testbean"); out.println("---------------------------------------------------"); out.println("ID : " + testbean.getID() ); out.println("NAME : " + testbean.getNAME() ); out.println("SEX : " + testbean.getSEX() ); out.println("---------------------------------------------------"); %> 久々に書いたので間違っているところがあるかもしれませんが・・・。 | ||||||||||||
|
投稿日時: 2003-12-13 07:22
例外がスローされているっぽいですね。
コントローラーが例外を破棄したりしていないですか? 例外が分ければ一発で解決する問題かもしれませんよ。 [ メッセージ編集済み 編集者: Anthyhime 編集日時 2003-12-13 07:27 ] | ||||||||||||
|
投稿日時: 2003-12-13 12:38
どんな結果が出ているか画面をみてないので分かりませんが、セッションのトラブルでは
1.すでに同じ名前で他のクラスのオブジェクトがsessionに登録されている 2.classの型が違っている(キャストするときはtypeで指定します) 3.直前にsessionを破棄している(validateメソッドを呼んでいる) なんてのが多かったですね、自分の場合 | ||||||||||||
|
投稿日時: 2003-12-13 14:43
皆さんありがとうございます。
あんまり理解ができていないのですが >1.すでに同じ名前で他のクラスのオブジェクトがsessionに登録されている という指摘にtestbeanというクラスが既にあったので JavaClassのIDを"testbean"からid="mybean"にしました。 イロイロやっては見たのですが 期待しているHTMLは吐き出されるようになりました。(以下のような画面) -------------------------------- 検索結果 出力 検索対象IDは: 0です。 名前は: nullです。 性別は: 0です。 検索終了 -------------------------------- しかし相変わらず値が渡ってきていません サーブレットコントローラーソースも参考に 貼り付けます 何かご指摘があればよろしくお願いいたします。 ---------------------------------------------------------------- //servlet コントロールプログラム package packkan; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class TestKanServlet extends HttpServlet{ //doGet public void doGet(HttpServletRequest request,HttpServletResponse response){doTask(request,response);} //doPost public void doPost(HttpServletRequest request,HttpServletResponse response){doTask(request,response);} //doTask Get Post どっちでも受け取る public void doTask(HttpServletRequest request,HttpServletResponse response){ try{ //検索ID int id = Integer.parseInt(request.getParameter("id")); /* JavaBean呼び出し */ /*業務Beanを呼ぶ*/ packkan.BeanSQLTest mybean = new packkan.BeanSQLTest(); /*パラメータセット*/ mybean.setkey(id); /* SQLmybeanのメッソドを呼ぶ */ mybean.getdb(); /*JSP呼び出し*/ //ViewであるJSPを呼び出す HttpSession session = request.getSession(true); session.setAttribute("mybean",mybean); getServletContext().getRequestDispatcher("/JspKanTest.jsp").forward(request, response); }catch(Exception e){ e.printStackTrace(); } } } ---------------------------------------------------------------- | ||||||||||||
|
投稿日時: 2003-12-14 10:06
JSPで、ちゃんと attribute 名を「mybeam」に変えて試していますか? | ||||||||||||
