1

ある .jsp から別の .jsp にパラメーターを渡す際に問題が発生しました。

2 つの .jsp (1 と 2) があります。1 では、データベースからいくつかのデータを取得し、ユーザーに一連のチェックボックスを表示します (以前に取得したデータによって異なります)。ユーザーは 1 つ以上のチェックボックスをオンにする必要があります。選択したものは 2 でデータベースから削除されます (「削除する番号を選択してください」のようなものです)。

選択したチェックボックスと値を 1 から 2 に渡す方法がわかりません。javascript/jQuery を試してみて、チェックボックスがオンになっているかどうかとその値を知り、値を非表示フィールドに追加して、 2 手に入れる。

1.jsp

<%
    HttpSession sesion = request.getSession();

    Company company = (Company) sesion.getAttribute("company");
    List<Phone> phones = company.getTelefonos();
%>
<form id="formulario" method="POST" action="desMul_Final.jsp">
<fieldset>
    <legend>Numbers</legend>
    <%
        Iterator<Phone> it1 = phones.iterator();
        while(it1.hasNext()){
            Phone t = it1.next();
            String number = t.getNumero();
    %>
    <p>
        <input name=check id="t_<%=number%>" type=checkbox value="<%=number%>" /> <%=number%>.
    </p>
    <%
        }
    %>
</fieldset>
<p class="buttons">
    <button type=submit onclick="javascript: pick();">Continue</button>
</p>
</form>

JavaScript/jQuery

function pick(){
var counter = 0;
$("#formulario fieldset p").each(function(index){
    var field;
    $(this).children("input").each(function() {
        if($this.is(':checked')){
            field = $(this).val();
        }
    });
    index = index + 1;

    texto = "<input type=hidden name=phone_"+index+" value="+field+" />";
    $("#formulario").append(texto);

    counter = index;
});
cant = "<input type=hidden name=amount id=amount value="+counter+" />";
$("#formulario").append(cant);
}

2.jsp (ここでは、情報があるかどうかだけを知りたい)

<%
    int amount = Integer.valueOf(request.getParameter("amount"));
    System.out.println(amount);

    for(int i = 1; i <= amount; i++){
            String s = request.getParameter("phone_"+i);
        System.out.println(s);
    }
%>

アクセスしようとすると、Javascript/jQuery が間違っrequest.getParameter("amount")java.lang.NumberFormatException: nullいると思います。

どうすればこれを解決できますか?.

4

3 に答える 3

0

クライアント側でのWebアプリケーションのデバッグに精通していますか?console.log( "$("#formulario "))を挿入し、$("#formulario ")。append(cant);の後にブレークポイントを挿入して、フォームのコンテンツがどのように変更されたか、および非表示の入力が変更されたかどうかを確認してください。追加した ?

于 2012-04-09T17:02:04.363 に答える
0

int[] amount= Integer.ValueOf(request.getParameterValues("amount"));の代わりに使用request.getParameter("amount");

于 2012-04-09T20:06:38.190 に答える
0

さて、私は最終的に解決策を見つけ、Javascript は必要ありませんでした。API で検索すると、このリクエストに含まれるパラメーターの名前を含む文字列オブジェクトの列挙getParameterNames()を返す、呼び出されたリクエストのメソッドが見つかりました。

そして、フォームを送信すると、コントロールがチェックされている場合、チェックボックスの値が送信されることがわかりました。それ以外の場合、何も送信されません。この情報とメソッドを使用して、チェックボックスの作成方法を変更し、列挙を使用して値を取得しました。

BEFORE  
<input name=check id="t_<%=number%>" type=checkbox value="<%=number%>" /> <%=number%>.

NOW  
<input name="<%=number%>" type=checkbox /> <%=number%>.

したがって、2 番目の .jsp では、選択したチェックボックスの名前 (電話番号) を含む列挙を取得します。

java.util.Enumeration enu = request.getParameterNames();
java.util.List<String> numbers = new java.util.ArrayList<String>();
while(enu.hasMoreElements()){
   String s = (String)(enu.nextElement());
   System.out.println(s);
   numbers.add(s);
}
于 2012-04-10T14:16:22.810 に答える