リクエストに応じたselectedの初期値設定方法

このQ&Aのポイント
  • java servletからjspを表示する際に、setAttributeした値に応じてプルダウンの初期値に設定する方法を教えて下さい。
  • リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。
  • jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。
回答を見る
  • ベストアンサー

リクエストに応じたselectedの初期値設定方法

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。 java servletからjspを表示する際に、 setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか? 以下の様にDetail.jspに移動する前に、NOをセットしています。 普通に実行したら、YESで表示されてしまいます。 jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。 例) [[[[[ShowDetail.java]]]]] request.setAttribute("JAPAN", "NO"); request.getRequestDispatcher("/Detail.jsp") .forward(request, response); [[[[Detail.jsp]]]] <form name="Japan"> <table border="1"> <tr> <th>Japan</th> <td> <select name="Japan" id="Japan" > <option value="YES">YES</option> <option value="NO">NO</option> <option value="KNOW">DON'T KNOW</option> </select> </td> </tr> </table> </form>

  • Java
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 >普通に実行したら、YESで表示されてしまいます。 >jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。 あと、カテゴリがJavaScriptではなくJavaですね。 順に考えてみませんか。初期値を設定するには何が必要でしょうか。 今は何もしていないから一番上のYESが表示されています。 <option value="NO" selected="selected">とする必要がありますよね。 そうしたらそれを出力するようにJSPを記述すればいいわけです。 フレームワークを何も利用していなければ以下のようになると思います。 <% // 例だとjapanにNOが入っている String japan = (String)request.getAttribute ( "JAPAN" ); %> <select> <option value="YES"<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>>YES</option> <option value="NO"<%= "NO".equals(japan) ? " selected=\"selected\"" : ""; %>>NO</option> <option value="KNOW"<%= "KNOW".equals(japan) ? " selected=\"selected\"" : ""; %>>KNOW</option> </select> 各optionでどの文字列が入っているかによってselected="selected"を出力すれば良いです。 <%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %> 上の記述は if ( "YES".equals(japan) ) { out.write ( " selected=\"selected\""); } else { out.write ( "" ); } と同義です。 ようするにjapanにYESが入ってきたらselected="selected"を出力することにより初期選択項目とする。 NOが入ってくれば"YES".equals(japan)には該当しないので無出力、次の"NO".equals(japan)で該当するのでNOの<option>が初期値となります。

hiroshimakun
質問者

お礼

上記の内容で正常に起動する事が出来ました! 詳細まで教えて頂き助かりました!! この様な記載の仕方も出来るんですね! ありがとうございました!!!!

関連するQ&A

  • セレクトボックスの内容を次のページで受け取る方法

    <form action="./check.asp" method="POST"> <table> <tr> <td> <select name="year"> <option value="2006" >2006</option> <option value="2007" >2007</option> <option value="2008" >2008</option> </select> </td> </tr> <tr> <td align="center"><input type="submit" value="確認する"></td> </tr> </table> </form> として 次のページで YEAR =Trim(request("year")) Response.Write YEAR で受け取り表示しようとしていますが取れません。なぜですか?教えてください

  • 登録ボタンを押すとjspファイルが開かれてしまう

    環境は IE 8 MySQL 5.5 Java 6 です。 form method="POST" で取得したデータをDBに登録させたいと思いますが、 登録ボタンを押すとなぜかファイルを開く・保存の画面が出てしまいました。 どの部分がおかしいのでしょうか? HTML側 <html> <head> <title>情報登録</title> </head> <body> <h1 style="background:#cccccc">情報登録</h1> <form method="POST" action="p_insert.jsp"> <table border="0"> <tr> <th style="color:#FFffFF;background:#0086b2;text-align:right;">名前</th> <td><input type="text" name="nam" size="35" /></td> </tr> <tr> <th style="color:#FFffFF;background:#0086b2;text-align:right;">URL</th> <td><input type="text" name="url" size="100" /></td> </tr> <tr> <th style="color:#FFffFF;background:#0086b2;text-align:right;">入手日</th> <td><input type="text" name="gdate" size="14" />(YYYY/MM/DD)</td> </tr> <tr> <th style="color:#FFffFF;background:#0086b2;text-align:right;">ランク</th> <td> <select name="grade"> <option value="5">大変良い</option><option value="4">良い</option> <option value="3">普通</option><option value="2">悪い</option> <option value="1">非常に悪い</option> </select> </td> </tr> <tr> <th style="color:#FFffFF;background:#0086b2;text-align:right;">メモ</th> <td><input type="text" name="memo" size="100" /></td> </tr> <tr> <td colspan="2"> <input type="submit" value="登録" /> <input type="reset" value="取消" /> </td> </tr> </table> </body> </html> JSP側 <%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*,java.io.*" %> <%! public String strEncode(String strVal) throws UnsupportedEncodingException{ if(strVal==null){ return (null); }else{ return (new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect")); } } %> <% Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection( "jdbc:mysql://localhost:3306/データベース名" + "?user=jsp10&password=jsp10&useUnicode=true&characterEncoding=Shift_JIS"); Statement sttSql=db.createStatement(); sttSql.executeUpdate( "INSERT INTO aaalist(name,url,gdate,grade,memo) VALUES('" + strEncode(request.getParameter("name")) + "','" + request.getParameter("url") + "','" + request.getParameter("gdate") + "'," + request.getParameter("grade") + ",'" + strEncode(request.getParameter("memo")) + "')"); sttSql.close(); db.close(); response.sendRedirect("p_insert.html"); %>

    • ベストアンサー
    • Java
  • プルダウンによる表示制御方法

    プルダウンの選択内容による表示の切り替えを行いたいです。 例えば、AとCを選択すると下にあるテキストボックスが非表示になり Bを選択するとテキストボックスが表示するように制御を行いたいです。 <table align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td> <form name="a"> <SELECT NAME="b"> <OPTION SELECTED> <OPTION VALUE="0">A <OPTION VALUE="1">B <OPTION VALUE="2">C </SELECT> </td></tr> <tr><td> <input type="text" size="6" maxlength="5" name="text1" value=""> </td></tr> </form> </table></form></td></tr></table> すみませんが、よろしくお願い致します。

    • ベストアンサー
    • HTML
  • ジャバスクリプトで作った自動計算フォームが

    ジャバスクリプトで作った自動計算フォームが 動かなくて困り果ております。 初心者です。御指南のほど、どうぞ宜しくお願いします。 ■ 編集ソース <html> <head> <title>テスト</title> <style type="text/css"> <!-- table { border-collapse: collapse; } table, th, td { border: 1px #808080 solid; } th, td { padding: 3px 10px; } th { background-color: #d3e9fa; } td { background-color: #ffffff; } td strong { color: #ff0000; } --> </style> <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1 = document.form1.goods1.selectedIndex * 2900; document.form1.goods1.options[document.form1.goods1.selectedIndex].value; document.form1.field1.value = price1; // 小計を表示 // 合計を計算 var total = price1 // 設定終了 document.form1.field_total.value = total; // 合計を表示 } // --> </script> </head> <body> <form action="#" name="form1"> <table> <tr> <th>コース名</th> <th>単価</th> <th>数量</th> <th>縁</th> <th>金額</th> </tr> <tr> <td>激安コースA</td> <td align="right">2,900円</td> <td><select name="goods1" onchange="keisan()"> <option>0</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> <option>9</option> <option>10</option> </select></td> <td><select name="goods1" onchange="keisan()"> <option value="0">額タイプを選択してください</option> <option value="500">タイプ1(500円)</option> <option value="1000">タイプ2(1,000円)</option> <option value="1500">タイプ3(1,500円)</option> </select></td> <td><input type="text" name="field1" size="8" value="0" /> 円</td> </tr> <tr> <td align="right" colspan="4"><strong>合計</strong></td> <td><input type="text" name="field_total" size="8" value="0"> 円</td> </tr> </table> </form> </body> </html>

  • 値の取得

    先日と同じ問題を出してしまい、申し訳ございません。 iの値を取得したいですが、どうしてもservlet側を取得が出来ないです。 教えてください。 <%@page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.util.*" %> <%@ page import="blog.*" %> <html> <body> <script type="text/javascript"> <!-- function check(){ if(window.confirm('本当に削除してよろしいでしょうか?')){ // 確認ダイアログを表示 var element = document.getElementById("i") request.setAttribute("id", element);// return true; // 「OK」時は送信を実行 } else{ // 「キャンセル」時の処理 window.alert('キャンセルされました'); // 警告ダイアログを表示 return false; // 送信を中止 } } //--> </script> <center> <table> <form action="SeachServlet" method="POST"> <tr> <td>名前:<input type="text" name="name" size="40" value="<%if(request.getAttribute("name")!=null){%> <%=request.getAttribute("name")%><%}%>"></td></tr> <tr><td>日付: <select name="year"> <option><%if(request.getAttribute("year")!=null){%> <%=request.getAttribute("year")%> <%}%></option> <%Calendar cl=Calendar.getInstance(); int year = cl.get(Calendar.YEAR); for(int i=year-7; i<=year+3;i++){ %> <option value="<%=i %>"> <%=i %></option> <%} %> </select>年 <select name="month"> <option><%if(request.getAttribute("month")!=null){%> <%=request.getAttribute("month")%> <%}%></option> <% for(int i=1; i<=12;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>月 <select name="day"> <option><%if(request.getAttribute("day")!=null){%> <%=request.getAttribute("day")%> <%}%></option> <% for(int i=1; i<=31;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>日</td> </tr> <tr><td><input type="button" value=" 印刷 "></td> <td><input type="submit" name="seach" value=" 検索 "></td> </form> </tr> </table> <hr> <FORM> <div><input type="button" value=" 戻る " onClick="history.back()"></div> </FORM> <form action="SeachServlet" method="POST"> <% List<Loginbeans> list = (List<Loginbeans>)request.getAttribute("productlist"); if(list.isEmpty()){ out.print("該当のデータはありません。"); }else{ %> <table border="1"> <tr><th>ユーザID</th><th>名前</th><th>日付</th></tr> <% int i=0; for (Loginbeans bn : list) { i++;//この値を取得したいです %> <tr><td><%=bn.getUser_id()%><input name="use_id" type="hidden" value="<%=bn.getUser_id() %>"/></td> <td><%=bn.getName()%><input name="name" type="hidden" value="<%=bn.getName()%>"/></td> <td><%=bn.getTotal()%><input name="total" type="hidden" value="<%=bn.getTotal()%>"/></td> <td><input id="<%=i%>" type="submit" value=" 削除 " name="delete" onClick="return check()"></td> </tr> <%}}%> <input type="hidden" name ="number" value ="element"> </form> </table> </center> </body> </html> selvet側で String id = (String)request.getAttribute("id"); String ida = request.getParameter("number"); 取得できないですが・・

  • ラジオボタンで入力し、その結果をCGIで表示するプログラム

    htmlで <html> <head> </head> <body> <form method="get" action="question.cgi"> <table width="50" height="" border="1" bordercolor="black" bgcolor="white" cellSpacing="0" cellpadding="5"> <tr><th>/</th><th>yes</th><th>no</th></tr> <tr><th>1</th><td><input type="radio" name="char1"></td> <td><input type="radio" name="char1"></td></tr><br> <tr><th>2</th><td><input type="radio" name="char2"></td> <td><input type="radio" name="char2"></td></tr><br> <tr><th>3</th><td><input type="radio" name="char3"></td> <td><input type="radio" name="char3"></td></tr><br> <tr><th>4</th><td><input type="radio" name="char4"></td> <td><input type="radio" name="char4"></td></tr><br> </table> <input type="button" value="送信" ><input type="reset" value="リセット"><br> </form> </body> </html> と書き、C言語でCGIを書き、ラジオボタンを押して送信ボタンを押すと 1:yes,2:no,3:no,4:yesなどと文字列で出力したいのです。 getメソッドがいいのかpostメソッドいいのかも教えていただければうれしく思います。 (この質問ではgetメソッドを使っていますが、あまり気にしないでください)

    • ベストアンサー
    • CGI
  • php言語にて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> これにボタンを付けて、ボタンを押したら操作をできなくするにはどうすればいいですか? 保存のような機能を付けたいのですが… なにか参考になるサイトはありませんか?

    • 締切済み
    • PHP
  • テーブルの行削除について

    以前、テーブルの行追加について教えてもらい出来ましたが 逆に、追加された行を削除する方法を教えてください。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS"> <TITLE>行追加・削除</TITLE> </HEAD> <BODY> <TABLE BORDER="1" id="Table1"> <TR> <TH>タイトルA</TH> <TH>タイトルB</TH> </TR> <TR> <TD><INPUT TYPE="text" SIZE="18" MAXLENGTH="18" NAME="A" VALUE=""></TD> <TD><INPUT TYPE="text" SIZE="18" MAXLENGTH="18" NAME="B" VALUE=""></TD> </TR> </TABLE> <INPUT TYPE="button" VALUE="行追加" onclick="addRow()"> <INPUT TYPE="button" VALUE="行削除"> <script language="JavaScript"> function addRow() { var tbl = document.getElementById("Table1").firstChild; if (!tbl.tagName) { tbl = document.getElementById("Table1"); } var tr = document.createElement("tr"); var td1 = document.createElement("td"); var tx1 = document.createElement("input"); tx1.setAttribute("type","text"); tx1.setAttribute("size","18"); tx1.setAttribute("maxlength","18"); tx1.setAttribute("name","Cn"); tx1.setAttribute("value",""); td1.appendChild(tx1); var td2 = document.createElement("td"); var tx2 = document.createElement("input"); tx2.setAttribute("type","text"); tx2.setAttribute("size","18"); tx2.setAttribute("maxlength","18"); tx2.setAttribute("name","Cn"); tx2.setAttribute("value",""); td2.appendChild(tx2); tr.appendChild(td1); tr.appendChild(td2); tbl.appendChild(tr); } </script> </BODY> </HTML>

  • jsp 通販サイト作成での質問

    jspを使い通販サイトを作成しています 「session.jsp」では商品の選択をし選んだ商品をsessionを用いて 次のページの「cart.jsp」で表示するというものなのですが 「session.jsp」の下部で、カートに入れる のボタンを押した数に応じて 選んだ商品の数を表示するものを作ったのですが上手くカウントできていません size()を使い商品数を表示したいのですが上手くいきません どなたかよろしくお願いします <%@ page contentType="text/html;charset=Shift_JIS"%> <%@ page import= "java.util.ArrayList" %> <%@ page session="true" %> <% request.setCharacterEncoding("Shift_JIS"); String[] Price = {"4000","2500","500","3000","1500"}; String[] Name ={"たらばがに","毛ガニ","いか","うに","あわび"}; String[] Img ={"taraba.gif","ke.gif","ika.gif","uni.gif","awabi.gif"}; String message =""; String abc =""; String selectValues=request.getParameter("select"); String[] array=new String[3]; if(selectValues !=null){ array[0]=Name[Integer.parseInt(selectValues)]; array[1]=Price[Integer.parseInt(selectValues)]; array[2]=Img[Integer.parseInt(selectValues)]; ArrayList<String> i = new ArrayList<String>(); i.add(selectValues); //ここが問題点です abc="かごの中身は"+i.size()+"個です"; }else{ abc="商品を入れてください"; } %> <center><h1>海産物ショッピング</h1></center> <html> <head> <title>海産物ショッピング</title> </head> <body> <div align="center"> <hr> <form action="session.jsp"> <table border ="1"> <tr><th>たらばがに</th><th><img src="img/taraba.gif"></img></td></th><td>¥4000円<input type ="hidden" name=select value="0"><input type="submit" name=keyword value="カートに入れる"></input></td> </form> <form action="session.jsp"> </tr><tr><th>毛ガニ</th><th><img src="img/ke.gif"></img></td></th><td>¥2500円<input type ="hidden" name=select value="1"><input type="submit" name=keyword value="カートに入れる"></td></tr> <tr><th>いか</th><th><img src="img/ika.gif"></img></td></th><td>¥500円<input type ="hidden" name=select value="2"><input type="submit" name=keyword value=" カートに入れる"></td></tr> <tr><th>うに</th><th><img src="img/uni.gif"></img></td></th><td>¥3000円<input type ="hidden" name=select value="3"><input type="submit" name=keyword value="カートに入れる"></td></tr> <tr><th>あわび</th><th><img src="img/awabi.gif"></img></td></th><td>¥1500円<input type ="hidden" name=select value="4"><input type="submit" name=keyword value="カートに入れる"></td></tr> </table><br> </form> <table border ="1"> </table><br> <%=message %> <%=abc %> <hr> </div> </body> </html>

    • ベストアンサー
    • Java
  • セレクトボックス の 選択規制

    今、フォームで入力画面を作っています。 その中にセレクトボックスが4つアリ、現在「未選択」の場合エラーチェックをするようにしています。 そして、ここにもうひとつのチェックを追加したいのですが皆目見当が付きません・・・ 条件 kaikai、bunkai1、bunkai2、heikai  全てが不参加の場合 "参加する会を最低一つは選択してください。"と言うコメントをだすというものです。 皆様よろしくお願いいたします。 ********  現在の JavaScript  ********* <SCRIPT language="JavaScript"> <!-- //フォームチェック function fcheck() { if(document.form1.kaikai.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.bunkai1.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.bunkai2.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.heikai.value == "未選択") { window.alert("選択してください"); return false; } } //--> </SCRIPT> ********  HTML内のフォーム  ********* <table> <tr><th>1 ( * )</th> <td> <SELECT NAME="kaikai"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>2 ( * )</th> <td> <SELECT NAME="bunkai1"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>3 ( * )</th> <td> <SELECT NAME="bunkai2"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>4 ( * )</th> <td> <SELECT NAME="heikai"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> </table>

専門家に質問してみよう