• 締切済み

リストに入ったインスタンスをjspで表示させたい

idやpassやユーザーの情報が入ったインスタンスgu1,gu2,gu3があります。 そのインスタンスをリストに入れ、最終的にJSP側に飛ばしたいです。 JSPで受け取ったリストをすべてテーブルタグ上に表示させたいのですがうまくいきません。 request.setAttribute("list",”文字列”);であれば受け渡しができるのですが、インスタンスとなると難しく・・・。 ご教授お願い致します。 サーブレット側 list.add(gu1); list.add(gu2); list.add(gu3); request.setAttribute("list",list); JSP側 <table border="1"> <c:forEach var="item" items="list">    <tr> <td>${item.Id} </td>←ここが間違えている気がします。 <td>${item.pass} </td>  </tr> </c:forEach> </table>

  • Java
  • 回答数3
  • ありがとう数2

みんなの回答

  • HNEX
  • ベストアンサー率62% (43/69)
回答No.3

<c:forEach var="item" items="${list}"> これでどうでしょうか?

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.2

No.1です。 質問文をよく見たら、 <td>${item.Id} </td> となっていますが、i と I を間違えているということはないですか?

nissanngtr34
質問者

お礼

失礼しました。小文字で駄目でした。

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.1

インスタンスgu1,gu2,gu3は、どんなクラスですか? ${item.id} や ${item.pass} というのは、内部的には、item.getId() や item.getPass() を呼び出して処理されます。 インスタンスgu1,gu2,gu3のクラスに、getId() や getPass() はありますか? たとえば、 public String getId() { return id; } など。

nissanngtr34
質問者

お礼

ご返答ありがとうございます。 このようになっています。 public class GetUser { private String Id; private String Pass; private String Name; private String Sex; public String getId(){ return this.Id; } public String getPass(){ return this.Pass; } public String getUser(){ return this.Name; } public String getSex(){ return this.Sex; } public void setId(String Id){ this.Id = Id; } public void setPass(String Pass){ this.Pass = Pass; } public void setName(String Name){ this.Name = Name; } public void setSex(String Sex){ this.Sex = Sex; } } こちらをインスタンス化しています。 GetUser gu1 = new GetUser(); GetUser gu2 = new GetUser(); GetUser gu3 = new GetUser(); gu1.setId("yamada"); gu1.setPass("pas1"); gu1.setName("山田"); gu1.setSex("men"); gu2.setId("suzuki"); gu2.setPass("pas2"); gu2.setName("鈴木"); gu2.setSex("men"); gu3.setId("tanaka"); gu3.setPass("pas3"); gu3.setName("田中"); gu3.setSex("men");

関連するQ&A

  • jspでのArrayListの値の表示

    jsp上でBeanで以下のように設定されている ArrayList<ArrayList<Integer>> a; a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.get(0).add(0); a.get(0).add(1); a.get(1).add(2); a.get(1).add(3); a.get(1).add(4); a.get(1).add(5); a.get(2).add(6); a.get(2).add(7); a.get(2).add(8); aのような行と列が不定のArrayListの全ての値をjspの画面上に  値 値 値  0  2  6  1  3  7    4  8    5 といったようにテーブルで表示したいのですがjspにどのような既述をすればよいでしょうか? クリックしたときの処理などの導入や項目を増やすなど拡張する場合があるので 以下のような形とレイアウトが同じようになると望ましいです <td> <table> <tr>値</tr> <tr>0</tr> <tr>1</tr> <tr>2</tr> </table> </td> <td> <table> <tr>値</tr> <tr>3</tr> <tr>4</tr> <tr>5</tr> </table> </td> <td> <table> <tr>値</tr> <tr>6</tr> <tr>7</tr> <tr>8</tr> </table> </td>

  • jspでの表示の仕方

    下記のような、jspへの受け渡しができずにいます。 ご回答お願いします。 Servletは、 String query = "SELECT * FROM test"; ResultSet resultset = statement.executeQuery( query ); request.setAttribute("obj",resultset); ServletContext context = getServletContext(); RequestDispatcher rd = context.getRequestDispatcher("/kekka.jsp"); rd.forward(request,respons); とした時、jsp側で、 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page import = "java.sql.*" %> <%! ResultSet rs = (ResultSet)request.getAttribute("obj"); %> <% While(rs.next()){String hinmei = rs.getString("hinmei");} %> <html> <head> <title>JSP</title> </head> <body> <table border="0"> <tr> <td><%=hinmei%></td> </tr> </table> </body> </html> と、したいのですが、白い画面になりjspの表示ができません。 やはり、ResultSetオブジェクトのAttributeはできないのでしょうか? それとも、jspの構文に問題があるのでしょうか? Vector、Stringは、この形のやり方で表示できたのですが・・・。 間違いを指摘してください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • jspへのディスパッチが上手くいかず苦戦しています

    以前こちらで相談し、その件は解決したのですが、また新たに相談させて下さい。長くてすみません。 http://okwave.jp/qa/q9040290.html 以前、サーブレット上にて、ユーザー情報(ID,Pass,Name)が入ったオブジェクトをリストに入れ そのままSystem.out.printlnをすると「GetUser@19e0bfd」が表示され、ユーザー名等が表示せず困りましたと相談したのですが教えて頂いた通りすると解決する事が出来ました。 しかしそのリストのjspにてどうやって飛ばし、どのようにすればJSPにて各リストに入ったオブジェクトを表示させる事ができるでしょうか? ご教授お願い致します。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); GetUser gu1 = new GetUser();//ユーザー一人目 GetUser gu2 = new GetUser();//ユーザー二人目 GetUser gu3 = new GetUser();//ユーザー三人目 gu1.setId("yamada"); gu1.setPass("pas1"); gu1.setName("山田"); gu1.setSex("men"); gu2.setId("suzuki"); gu2.setPass("pas2"); gu2.setName("鈴木"); gu2.setSex("men"); gu3.setId("tanaka"); gu3.setPass("pas3"); gu3.setName("田中"); gu3.setSex("men"); List list = new ArrayList();//リスト3人分 list.add(gu1); list.add(gu2); list.add(gu3); GetUser[] user; user=new GetUser[3];   //各リストに各ユーザーのオブジェクトを入れる for(int i=0; i<list.size(); i++){ user[i]=(GetUser)list.get(i); request.setAttribute("list", user[i]); }   //sample_get1.jspに転送 RequestDispatcher dispatcher = request.getRequestDispatcher("/sample_get1.jsp"); dispatcher.forward(request, response); }

  • JSPにおける引数の受け渡し

    こんにちは. 今JSPのプログラムを作っているのですが,引数を送る場面で困っています. test2.jspにおいて,タイプはちゃんと表示されているのですが,IDとパスワードはnullになっています. もし宜しければ,どこが間違っているのかお教えいただけないでしょうか?よろしくお願いします. 【test.jsp】 ~省略~ <%String type="aaa";%> <?xml version="1.0" encoding="Shift-JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> ~省略~ </head> <body> <div class="abc"> <h1>タイトル</h1> <form action="test2.jsp" method="post"> <p> <table> <tr> <td>ID</td> <td><input type="text" name="user_id" /></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="user_pass" /></td> </tr> </table> <br /> <input type="button" value="ログイン" onclick="test('test2.jsp?type=<%=type%>')" /> </p> </form> </div> <script type="text/javascript" src="test.js"></script> </body> </html> 【test2.jsp】 ~省略~ <% String type=request.getParameter("type"); String user_id=request.getParameter("user_id"); String user_pass=request.getParameter("user_pass"); %> ~省略~ <h1>タイトル2</h1> <p> <table> <tr> <td>ID</td> <td><%=user_id%></td> </tr> <tr> <td>パスワード</td> <td><%=user_pass%></td> </tr> <tr> <td>タイプ</td> <td><%=type%></td> </tr> </table> </p>

    • ベストアンサー
    • HTML
  • JSPとjavaの問題

    ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST "); ArrayList list = new ArrayList(); while(rs.next()) { int state = rs.getInt("attendance"); list.add(new Integer(state)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSPでDB接続</title> </head> <body> <table> <tr><td>欠席</td><td>><%= countNum(-1, in) %></td></tr> <tr><td>未定</td><td><%= countNum(-1, in) %></td></tr> <tr><td>出席</td><td><%= countNum(-1, in) %></td></tr> </table> 以下のエラーがでてきますが、どういう意味でしょうか。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /jsp/tokei.jsp の中の26行目でエラーが発生しました The method countNum(int, int[]) is undefined for the type tokei_jsp 23: </head> 24: <body> 25: <table> 26: <tr><td>キ鄲ハ</td><td>><%= countNum(-1, in) %></td></tr> 27: <tr><td>フ、ト�</td><td>3</td></tr> 28: <tr><td>スミタハ</td><td>3</td></tr> 29: </table> よろしくおねがいします。

    • ベストアンサー
    • Java
  • JSP DB 表示

    こんにちは。DBから取得 JSPに表示を勉強しています。 条件が 列指定 前方指定 昇順降順などあり 列ごとに取得 表示といった形で表示することができました ただこれだと 横に表示されるのですが、どうすれば縦に表示できるように 組みなおせますか?それかこの組み方だとHTMLでがんばったほうが良いのでしょうか?アドバイスお願いします JSP(検索、表示) <table border> <tr> <td> 検索内容 TESTNO <input type="checkbox" name="TESTNO" value="TESTNO" </td> <td> NAME <input type="checkbox" name="NAME" value="NAME" > </td> <td> KANA <input type="checkbox" name="KANA" value="KANA" > </td> </tr> </table border> <table border> <tr> <td> 検索条件 <input type="text" name="name" >(NAME前方一致) </td> </table> <table border> <tr><td> ソート   <select name="menu"> <option value=TESTNO>TESTNO</option> <option value=NAME>NAME</option> <option value=KANA>KANA</option> </select> <input type="radio" name="narabi" value="ASC" /> 昇順 <input type="radio" name="narabi" value="DESC"/> 降順 </td></tr> </table> <br><input type="submit" value="検索"> </from> </body> </form> <Hr> <% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ if(request.getAttribute("list")!=null){ List list=(List)request.getAttribute("list"); for(int i=0; i<list.size(); i++){ out.print(list.get(i)+" "); } } %><br> <% if(request.getAttribute("list1")!=null){ List list1=(List)request.getAttribute("list1"); for(int i=0; i<list1.size(); i++){ out.print(list1.get(i)+" "); } } %><br> <% if(request.getAttribute("list2")!=null){ List list2=(List)request.getAttribute("list2"); for(int i=0; i<list2.size(); i++){ out.print(list2.get(i)+" "); } } %><br> サーブレット(取得、フォワードで転送) String name=request.getParameter("name"); //NAMEの前方一致条件取得 String narabi=request.getParameter("narabi"); //降順、昇順、の値取得 String menu=request.getParameter("menu"); //昇順、降順するところの列 name取得 db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+1+",'山田', 'ヤマダ')"); db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+2+",'佐藤', 'サトウ')"); ・・・・・・ //課題のため10行入力 db.commit(); //コミットして 確定 ArrayList list; ArrayList list1; ArrayList list2; //リスト作成 if(narabi!=null){//昇順 降順にチェックがあるか判断 String[][]hai4=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%' order by "+menu+" "+narabi+" ;"); //nameで前方一致 menuで昇順降順場所 narabiで降順昇順 list = new ArrayList(Arrays.asList(hai4[0])); list1 = new ArrayList(Arrays.asList(hai4[1])); list2 = new ArrayList(Arrays.asList(hai4[2])); }else{//昇順降順なければこっち String[][]hai3=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%';"); //nameで前方一致 list = new ArrayList(Arrays.asList(hai3[0])); list1 = new ArrayList(Arrays.asList(hai3[1])); list2 = new ArrayList(Arrays.asList(hai3[2])); } if (request.getParameter("TESTNO") != null){ request.setAttribute("list", list); } if (request.getParameter("NAME") != null){ request.setAttribute("list1", list1); } if (request.getParameter("KANA") != null){ request.setAttribute("list2", list2); } 結果 1 2 3 4 5 6 7 8 9 10 山田 佐藤 山本 伊藤 武田 鈴木 小野 松井 田中 高橋 ヤマダ サトウ ヤマモト イトウ タケダ スズキ オノ マツイ タナカ タカハシ 1 山田 ヤマダ 2 佐藤 サトウ ・・・・・・ といった表示にしたいです 行ごとに取得して繰り返すのがいいのかなと思って最初やていたのですが 列指定したときに エラー(指定listがない)といったようになるので この組み方にしました。 アドバイスお願いします

    • ベストアンサー
    • Java
  • Smartyでインクリメント

    Smartyで以下のような処理がしたいのですがうまくいきません・・・(横にセルを5コ並べた後に改行したい) どのように記述したらよいか教えて頂けますでしょうか。 <table> <tr> {$i = 0} {foreach item=item_list from=$item_list} <td>{$item_list.hoge|escape}</td> {$i = $i + 1} {if $i mod 4 eq 0} </tr><tr> {/if} {/foreach} </table>

    • ベストアンサー
    • PHP
  • 【PHP】smartyとPHPの記述違いとメリット

    smartyというのが、デザインとプログラムを分けれるというので 使ってみたのですが、 //--------------------smarty--------------------- <table border=1> <tr> <th>{$table.title}</th> </tr> {foreach item=result from=$data_list} <tr> <td>{$result[0]}</td> </tr> {/foreach} </table> と、smarty用の記述をHTML内にいろいろ書かなければならず //------------------php---------------------- <table border=1> <tr> <th><?=$table[title] ?></th> </tr> <?php foreach($data_list as $key => $value){ ?> <tr> <td><?= $value ?></td> </tr> <?php } ?> </table> とHTML内にPHPをいろいろ書くのと  あまり大差無い気がして どういう点がよいのがイマイチ分かりません。 smartyは 使う メリットは どういうものがあるのでしょうか。

    • ベストアンサー
    • PHP
  • jspのListのListの表現方法について

    Listの中にListを入れる処理をJava側でしています。 そのListをリクエストに投げているのですが JSPでの表現方法がわかりません。 Java側では ArrayList[] a_list = new ArrayList[10]; a_list[j]= new ArrayList<Dto>(); a_list[j].add(list.get(i)); という感じで作っています。 logic:iterateをネストしても うまく取れません。 どなたか、分かりましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

専門家に質問してみよう