- - PR -
jsp:useBean のIDを
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-16 10:52
お世話になっています。
login.jsp,list.jsp という2つのJSPを用意し、login.jspでBeanに ログイン名を設定し、list.jspでは ××さん。 と表示させる初歩のサーブレットJSPを作成しています。 下記は list.jsp のコードですが 2行目の useBean id に現在指定中の bean という文字列以外を指定すると "××さん" の部分だけ 表示されなくなってしまうのです。つまりBeanにsetしてあるUserNameが Nullになっているということまではログ等を使って分かったのですが、 なぜ bean だと成功し、たとえばbean1とかにidを変更(もちろんjsp中のコードも変更) するとsetした値がNULLになるのかが分かりません。 サーブレットのほうでBeanクラスをNewする処理はその間動いていません。 どなたかご教授いただけないでしょうか? <%@page contentType="text/html; charset=SJIS" %> <jsp:useBean id="bean" class="loginManager.LoginBean" scope="request"/> <html> <head> <title>KRequest Page</title> </head> <body> <form name="form" action="LoginServlet" method="post"> <p>First Sample</p> <%-- 名前、挨拶メッセージが設定されていたら表示します --%> <% if(bean.getUserName()!=null){ %> <h1><%=bean.getUserName()%>さん</h1> <%}%> <% if(bean.getGreetMsg()!=null){ %> <h1><font color="green"><%=bean.getGreetMsg()%></font></h1> <%}%> <input type="submit" name="submitValue" value="back"> <input type="submit" name="submitValue" value="OK"> <%-- ページ名をHiddenで持ちます --%> <input type="hidden" name="pageName" value="list"> </form> </body> </html> 動作環境 WindowsXP eclips2.1 j2sdk1.4.2_04 Tomcat 5.0 [ メッセージ編集済み 編集者: ringo 編集日時 2006-05-16 10:53 ] | ||||||||
|
投稿日時: 2006-05-16 11:09
beanが勝手に生成されて中身が入るわけではないので、どこかで生成されて属性の値が
設定されているわけです。このbeanはリクエストスコープなので、このJSPにフォワード しているサーブレットなりJSPなりでこのbeanを生成してrequestオブジェクトに設定 、つまり、以下のような処理が実行されているはずです。
他のIDでは取り出せないのは、requestオブジェクトに設定した際に指定した名前と 対応しているからです。 | ||||||||
|
投稿日時: 2006-05-16 11:24
UKさん、ありがとうございます。
折角教えていただいているのに、理解が遅くて申し訳ないのですが、 私の環境で、サーブレットとして作成している LoginServlet.javaにおいて LoginBean bean = new LoginBean(); という風に記述しているから ここでのid名は"bean"でないとうまく動かない、 ということなのでしょうか? だとしたら一つ疑問があります。 前回引用した list.jsp は Beanから登録されているUserNameを 取り出して表示するものでしたが、そのUserNameを登録する際には 別のJSP(login.jsp)を使用しております。 そちらのほうでは以下のような記述としており、idに"bean"を使用しておりません。 以下のJSPがコード表記になると loginManager.LoginBean loginBean = new loginManager.LoginBean(); loginBean.setUserName("...."); loginBean.setGreetMsg("...."); request.setAttribute("loginBean ", loginBean); ということになったりする・・・ということはないのでしょうか? とんちんかんなことを言っていたら済みません。
| ||||||||
|
投稿日時: 2006-05-16 11:29
すみません。
やっぱりとんちんかんな事を言っていました。 Servletのソースに request.setAttribute("bean", bean); とある、コレのことだったんですね。 ここの第一引数が "bean" になっているから 取り出すときは"bean"と しないといけなかった、ということだったんですね。 すみません。 ご教授ありがとうございました。 |
1