我昨天遇到了一个特定而有趣的问题。假设我们有以下html代码块:
<div id="addresses">
<input type="text" name="address" id="addr1" />
<input type="text" name="address" id="addr2" />
<input type="text" name="address" id="addr3" />
</div>
发布此表单时,将连接具有相同名称的输入元素,并使用逗号字符分隔值。例如,如果我们有以下值:
addr1 = 'TEST TEST XXX'
addr2 = 'YYY ZZZ 11111'
addr3 = 'ZZZ KKK TEST '
提交的表格发布数据如下:
address = 'TEST TEST XXX', 'YYY ZZZ 11111', 'ZZZ KKK TEST '
然后我可以将这些值中的每一个作为服务器端数组的元素(数组的3个不同元素)。但如果值如下:
addr1 = 'TEST, TEST XXX'
addr2 = 'YYY ZZZ, 11111'
addr3 = 'ZZZ KKK, TEST '
然后提交的表单数据变为:
address = 'TEST, TEST XXX', 'YYY ZZZ, 11111', 'ZZZ KKK, TEST '
然后结果数组包含6个完全错误的元素。我相信值中包含的COMMA字符不会被转义。
关于这个问题的任何想法。提前谢谢......
答案 0 :(得分:1)
您没有使用数组。
更改每个输入:
<input type="text" name="address[]" id="addr1" />
当您获取数据时,您将拥有一个数组而不会出现任何关于逗号的问题。
$_POST['adddess']=array(0=>'TEST, TEST XXX',1=>'YYY ZZZ, 11111',2=>'ZZZ KKK, TEST ');
您可以根据索引
访问每个项目答案 1 :(得分:1)
使用此HTML
<div id="addresses">
<form:input path="address[0]" />
<form:input path="address[1]" />
<form:input path="address[2]" />
</div>
和Spring应该使用String[] address
服务器端对象的值填充输入文本,反之亦然。
您可以在此处查看:http://bitbybitblog.com/forms-and-data-models-in-spring-mvc/
答案 2 :(得分:0)
不使用具有一个NAME属性值的多个输入字段,而是使用唯一值。这可以使您的代码更加健壮。
<div id="addresses">
<input type="text" name="addr1" id="addr1" />
<input type="text" name="addr2" id="addr2" />
<input type="text" name="addr3" id="addr3" />
</div>
在php方面:
<?php
$address = array($_REQUEST['addr1'], $_REQUEST['addr2'], $_REQUEST['addr3']);
?>