是否有可能有一个隐藏的输入字段作为一个数组的值,然后有它传递给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
你最好的选择是将字符串化的数组,然后分配给它。
element.value = JSON.stringify( ["Hello", "World"] );
将所得的值将是一个JSON串然后可以在服务器上解析,重新创建阵列。 这种方法适用于对象,以及如果你想有类似的东西关联数组。
我要指出的是,虽然JSON
今天跨浏览器相当不错的支持,旧的浏览器可能不支持它。 你可以很容易填充工具的功能,在这些情况下:
然而,你在Javascript中设置它,你必须分析它在服务器上。 这可能意味着通过分割值“”成C#数组,然后访问它,只要你想。 在表单提交发送的所有值都被作为一个字符串完全原样。
您可能需要使用http://www.w3schools.com/jsref/jsref_join.asp设置隐藏的输入值。 这是没有必要的,但 - 它似乎是不使用。加入细()。 但要记住,值将是服务器上的字符串,而不是一个数组是很重要的。
你只能传递一个字符串作为参数,以及对输入的值。 这意味着你阵列将自动通过与接合它被转换成一个字符串“ ;
”,可以手动执行与所述.join()
方法 ,太。
服务器端你那么将需要选择的分隔符拆分字符串。
如果你想送他们作为一个数组,据我所知,你将需要两个输入元素:
<input type="hidden" name="hiddenInp[]"<!-- should be more descriptive --> value="a" />
<input type="hidden" name="hiddenInp[]"<!-- the same name --> value="b" />
我找到了答案通过以下链接 。
当你想分配任何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将其设置里面的表单元素,在客户端!