こにちは。最後のfor分の記述でまよっています。 今回JSPで検索 表示 サーブレットでDB取得(二次元配列で返しています) 昇順、降順、指定行だけ表示、前方一致などの条件をつけて表示しようとしています JSPの最後のFOR文の回数のとこlistサイズなどにしたいのですが リストがないときどうすればいいのかなと・・・ あとは今はとりあえず10と指定しているので前方一致のときに 件数がへるとインデックスが存在しないというエラーがでます どういう風に書けばうまくいくのか少しでいいんでアドバイスください 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); } //列指定されたときだけ setAttribute db.disconnect();//クローズする RequestDispatcher dispatcher =request.getRequestDispatcher("/::::.jsp"); //フォワード ページ指定 dispatcher.forward(request, response); JSP(検索、表示)
<% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ for(int i=0; i<10; i++){ if(request.getAttribute("list")!=null){ List list=(List)request.getAttribute("list"); out.print(list.get(i)+" "); } if(request.getAttribute("list1")!=null){ List list1=(List)request.getAttribute("list1"); out.print(list1.get(i)+" "); } if(request.getAttribute("list2")!=null){ List list2=(List)request.getAttribute("list2"); out.println(list2.get(i)); } 文字数の関係ですこし削っているところもありますが アドバイスよろしくおねがいします
検索画面
<% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ for(int i=0; i<10; i++){ if(request.getAttribute("list")!=null){ List list=(List)request.getAttribute("list"); out.print(list.get(i)+" "); } if(request.getAttribute("list1")!=null){ List list1=(List)request.getAttribute("list1"); out.print(list1.get(i)+" "); } if(request.getAttribute("list2")!=null){ List list2=(List)request.getAttribute("list2"); out.println(list2.get(i)); } 文字数の関係ですこし削っているところもありますが アドバイスよろしくおねがいします