1

HTML でフォームを送信すると、パラメーターを複数回渡すことができます。

<input type="hidden" name="id" value="2">
<input type="hidden" name="id" value="4">

次に、Struts で、プロパティ String[] id を持つ Bean を使用できます。これにより、配列が正しく設定されます。

私の質問は、どうすればJavascriptでそれを行うことができますか? 配列があり、form.id.value = myArray を設定すると、値がコンマ区切りのリストに設定されるだけです。したがって、Struts 側では、1 要素の配列、つまり文字列 "2,4" を取得します。

追加する必要があります。これをフォームで送信する必要があるため、id=2&id=4 などの GET 要求を生成することはできません。

4

4 に答える 4

2

これはあなたが探しているものですか?JavaScript 配列の各要素に対して非表示のフォーム フィールドを生成します。

var el;
for (var i = 0; i < myArray.length) {
    el = document.createElement("input");
    el.type = "hidden";
    el.name = "id";
    el.value = myArray[i];

    // Optional: give each input an id so they can easily be accessed individually:
    el.id = "hidden-myArray-" + i;

    // Optional: give all inputs a class so they can easily be accessed as a group:
    el.className = "hidden-myArray";

    form.appendChild(el);
}
于 2009-01-10T00:09:47.057 に答える
2

あなたがやろうとしていることは前向きではありませんが、ここに行きます:

var inputs = document.getElementsByName('id');
for(var i=0; i<inputs.length; i++) {
    var input = inputs[i];
    input.value = myArray[i];
}

これは、' ' という名前のすべての入力を反復処理しid、myArray から対応する値を割り当てます。

確信したほうがいいmyArray.length == document.getElementsByName('id').length

于 2009-01-10T00:11:49.503 に答える
1

1 つのアプローチは、各入力に一意の ID を与えることです。

<input id="id1" type="hidden" name="id" value="2">
<input id="id2" type="hidden" name="id" value="4">

次にJavaScriptで: -

document.getElementById("id1").value = myArray[0];
document.getElementById("id2").value = myArray[1];
于 2009-01-09T23:55:41.530 に答える
1

forms[0].elements.theName名前属性「theName」を持つすべての要素のコレクションが含まれています。例:

<form>
<input type="text" name="test"><br>
<input type="text" name="test">
</form>
<script>
var values = ['foo', 'bar'];
var testElements = document.forms[0].elements.test;
for(var i = 0; i < testElements.length; ++i)
    testElements[i].value = values[i];
</script>
于 2009-01-10T00:16:17.823 に答える