- - PR -
jsp、servlet、beanの連携
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-22 00:19
servletからbeanを呼び出して値を格納し、jspからその値を参照するプログラムを作っているのですが、jspからの参照がうまくいきません。
<TestControl.java> package chap1; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import chap1.*; public class TestControl extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { try { ServletContext ctx = this.getServletContext(); TestBean tb = new TestBean(); tb.setTable("aiueo"); String strMessage = tb.BeanSearch(); request.setAttribute("strMessage",strMessage); request.setAttribute("TestBean",tb); RequestDispatcher rd = ctx.getRequestDispatcher("/chap1/jndi/TestShow.jsp"); rd.forward(request, response); } catch (Exception e) { throw new ServletException(e); } } } <TestBean.java> package chap1; import java.io.*; import javax.naming.*; import javax.servlet.*; import javax.servlet.http.*; public class TestBean implements Serializable { private String table = "abc"; private String result= "def"; public void setTable(String table) {this.table = table;} public void setResult(String result) {this.result = result;} public String getTable(){return table;} public String getResult(){return result;} public void TestBean() {} public String BeanSearch () { TestBean tb = new TestBean(); String strTable = getTable(); setResult(strTable); return table; } } <TestShow.jsp> <html> <head> <title>test</title> </head> <jsp:useBean id="tb" class="chap1.TestBean" scope="request" /> strMessage = <c:out value="${requestScope.strMessage}"/><br> table = <jsp:getProperty name="tb" property="table" /><br> result = <jsp:getProperty name="tb" property="result" /><br> </body> </html> 結果は、 strMessage = aiueo table = abc result = def と表示されてしまいます。 beanに格納されたデータをjspから参照するには、どうしたらいいのでしょうか・・・ よろしくお願いいたします。 |
|
投稿日時: 2005-11-22 10:34
こんにちわ。
request.setAttribute("TestBean",tb); の部分を request.setAttribute("tb",tb); にしてみたらどうでしょう。 <jsp:useBean id="tb" class="chap1.TestBean" scope="request" /> で宣言しても、リクエストスコープ中にBeanが見つからずに新規に インスタンス化されたため、期待していたものとは違う値が 表示されたのでしょう。 |
|
投稿日時: 2005-11-22 23:15
さぷりさん、ありがとうございます。
>request.setAttribute("tb",tb); >にしてみたらどうでしょう。 この通りに書き直しましたら、狙い通りの値を出すことができました。 setAttribute命令に対しての私の勉強不足でした。 もう一度基礎から勉強しようと思います。 見直してみると、beanのコードも何がしたいんだかよくわからないですし・・・お恥ずかしい限りです。 |
1