10

非表示の入力フィールドの値を配列として取得し、それをSpring MVCコントローラーに渡すことは可能ですか?

function foo(){
    var myArray = new Array();
    myArray[0] = "Hello";
    myArray[1] = "World!";
    document.getElementById("hiddenInp").value=myArray;
}

そして、コントローラーで次のようなことを行います

@RequestMapping ...
public String test(HttpServletRequest request)
{
    String[] myArray = request.getParameter("hiddenInp");
    // Assuming that the name of the hidden input field is also hiddenInp
    System.out.println(myArray[0] + myArray[1]);
    ...
}

連想配列を使用している場合はどうですか?インデックスがintではなくstringの場合

4

4 に答える 4

19

最良のオプションは、配列を文字列化してから割り当てることです。

element.value = JSON.stringify( ["Hello", "World"] );

結果の値はJSON文字列になり、サーバーで解析して配列を再作成できます。このアプローチは、連想配列に似たものが必要な場合にも、オブジェクトに対して機能します。

JSON今日のブラウザ間でかなり良いサポートがありますが、古いブラウザはそれをサポートしていない可能性があることに注意してください。このような場合、機能をかなり簡単にポリフィルできます。

于 2012-06-07T21:06:31.183 に答える
2

文字列は、入力の値だけでなく、パラメーターとしてのみ渡すことができます。つまり、配列は ""で結合することで自動的に文字列に変換されます。これは、メソッド;を使用して手動で行うこともできます。.join()

サーバーサイドでは、選択した区切り文字でその文字列を分割する必要があります。

それらを配列として送信する場合は、2つの入力要素が必要になります。

<input type="hidden" name="hiddenInp[]"<!-- should be more descriptive --> value="a" />
<input type="hidden" name="hiddenInp[]"<!-- the same name --> value="b" />
于 2012-06-07T21:12:50.340 に答える
1

ただし、Javascriptで設定した場合は、サーバーで解析する必要があります。これはおそらく、値を「、」でC#配列に分割し、必要に応じてアクセスすることを意味します。フォーム送信で送信されるすべての値は、そのまま文字列として送信されます。

http://www.w3schools.com/jsref/jsref_join.aspを使用して、非表示の入力の値を設定することをお勧めします。ただし、これは必須ではありません。.join()を使用しなくても問題ないようです。ただし、値は配列ではなくサーバー上の文字列になることを覚えておくことが重要です。

于 2012-06-07T21:06:42.083 に答える
1

次のリンクから答えを見つけました。

JavaScriptオブジェクトまたは配列を割り当てる場合は、次のようにします。

var javascript_variable = 'object' or ['fruit1', 'fruit2', 'fruit3'];
$( '#hiden_input_element_unique_id' ).val( JSON.stringify(javascript_variable) );

フォームの送信後、サーバーサイドで次のようにデコードする必要があります。

$fruits_array = json_decode( $_POST['hiden_input_element_unique_name'] );

このようにして、サーバー側で任意のJavaScript配列を取得できます。これは、クライアント側でJavaScriptを介してフォーム要素に設定します。

于 2014-09-13T16:39:32.387 に答える