将具有相同名称的单选按钮传递给servlet

时间:2014-07-07 17:21:45

标签: java javascript jsp servlets

我有一个带有按钮的表单,它会动态添加一组相同表单的输入。

除了一个问题,我已经设法完成了它。

每次添加字段时,我都无法将具有相同名称的无线电输入类型的参数传递给servlet。它只将值传递给servlet一次。奇怪的是我可以成功传递文本输入类型。

或者还有其他方法可以将单选按钮中的值传递给servlet吗?

以下是代码:

<script type="text/javascript">
$(document).ready(function(){
var counter = 2;

$("#addDynamicDivs").click(function () {
var newTextBoxDiv1 = $(document.createElement('div'))
 .attr("id", 'TextBoxDiv1');
 newTextBoxDiv1.attr("style",'float: left;');

 var newTextBoxDiv2 = $(document.createElement('div'))
 .attr("id", 'TextBoxDiv2');
 newTextBoxDiv2.attr("style",'float: left;');

 var newTextBoxDiv3 = $(document.createElement('div'))
 .attr("id", 'TextBoxDiv3');
 newTextBoxDiv3.attr("style",'float: left;');

 var newTextBoxDiv4 = $(document.createElement('div'))
 .attr("id", 'TextBoxDiv4');
 newTextBoxDiv4.attr("style",'float: left;');

 newTextBoxDiv1.after().html('<label>Speaker Name : </label>' +
  '<input type="text" name="speakername" id="speakername" value="" >');

  newTextBoxDiv2.after().html('<label>Speaker Country : </label>' +
  '<input type="text" name="speakercountry" id="speakercountry" value="" >');

  newTextBoxDiv3.after().html('<label>Speaker Company : </label>' +
  '<input type="text" name="speakercompany" id="speakercompany" value="" >');

  newTextBoxDiv4.after().html('<label>ID Type: </label>' +
  '<ul name="idtype class="forms-list">'+
  '<li><input type="radio" name="idtype" id="idtype" value="New ID">'+
  '<label for="New ID">New ID</label></li>'+
  '<li><input type="radio" name="idtype" id="idtype" value="Old ID">'+
  '<label for="Old ID">Old ID</label></li></ul>');

  newTextBoxDiv1.appendTo("#TextBoxesGroup");
  newTextBoxDiv2.appendTo("#TextBoxesGroup");
  newTextBoxDiv3.appendTo("#TextBoxesGroup");
  newTextBoxDiv4.appendTo("#TextBoxesGroup");


});

});

从servlet中,通过以下代码检索参数:

String[] speakername    = request.getParameterValues("speakername");
String[] speakercountry = request.getParameterValues("speakercountry");
String[] speakercompany = request.getParameterValues("speakercompany");
String[] idtype         = request.getParameterValues("idtype");

我打印出上面每个String数组的长度,每个参数得到2,除了长度为1的idtype。

所有动态参数都已包含在表单中。

1 个答案:

答案 0 :(得分:1)

单选按钮通常只会根据请求从组中发送一个值。按照设计,只能从组中选择一个单选按钮。如果您向表单添加更多具有相同名称的单选按钮,则在您提交表单时,浏览器仍应仅为该组传递一个选定值。

如果您希望传递多个此表单,最好区分动态添加的表单(看起来您希望将所有数据一起发送,因此您需要添加唯一标识符每个<input>元素的名称,但另外将它们放在单独的<form>中将是更可取的。我不建议依赖浏览器在同一<input>内使用相同name的多个<form>进行传递。