![](/img/trans.png)
[英]How to pass value of radio button which is clicked to Spring MVC controller?
[英]How to pass textbox value which has the data to spring MVC controller?
我在我的一个项目中使用Spring MVC控制器。
下面是我的JSP代码,它将在其中显示三个单选按钮。 一个是Insert
,第二个单选按钮是Update
,第三个单选按钮是Delete
。
一旦我点击Insert
单选按钮,它会在插入单选按钮旁边显示两个文本框,同样的东西与其他两个单选按钮一样 -
<script type="text/javascript">
function doDisplay(radio) {
switch (radio.value) {
case "Insert":
document.getElementById("inserts").style.display = "inline";
document.getElementById("updates").style.display = "none";
document.getElementById("delete").style.display = "none";
document.getElementById("dynamicName").value = "insert";
break;
case "Update":
document.getElementById("inserts").style.display = "none";
document.getElementById("updates").style.display = "inline";
document.getElementById("delete").style.display = "none";
document.getElementById("dynamicName").value = "update";
break;
case "Delete":
document.getElementById("inserts").style.display = "none";
document.getElementById("updates").style.display = "none";
document.getElementById("delete").style.display = "inline";
document.getElementById("dynamicName").value = "delete";
break;
}
}
</script>
<body>
<form method="post" action="testOperation">
<!-- I used only one hidden box to store value -->
<input type="hidden" name="name" id="dynamicName">
<input type="radio" name="tt" value="Insert"
onclick="doDisplay(this);" /> Insert <span id="inserts"
style="display: none"> <label for="Node"> Node </label> <input
type="text" name="node" size="20" /> <label for="Data"> Data </label>
<input type="text" name="data" size="100" />
</span> <br /> <input type="radio" name="tt" value="Update"
onclick="doDisplay(this);" /> Update <span id="updates"
style="display: none"> <label for="Node"> Node </label> <input
type="text" name="node" size="20" /> <label for="Data"> Data </label>
<input type="text" name="data" size="100"/>
</span> <br /> <input type="radio" name="tt" value="Delete"
onclick="doDisplay(this);" /> Delete <span id="delete"
style="display: none"> <label for="Node"> Node </label> <input
type="text" name="node" size="20" /> <label for="Data"> Data </label>
<input type="text" name="data" size="100"/>
</span> <br />
<input type="submit">
</form>
以下是控制器代码 -
@RequestMapping(value = "testOperation", method = RequestMethod.GET)
public Map<String, String> testOperation() {
final Map<String, String> model = new LinkedHashMap<String, String>();
return model;
}
@RequestMapping(value = "testOperation", method = RequestMethod.POST)
public Map<String, String> testOperations(@RequestParam String name,
@RequestParam String node,
@RequestParam String data) {
final Map<String, String> model = new LinkedHashMap<String, String>();
System.out.println(name);
System.out.println(node);
System.out.println(data);
return model;
}
假设我单击Insert
单选按钮并在第一个文本中键入Hello
,在第二个文本框中键入World
,然后我将点击提交按钮,之后我在name
变量中看到insert
值,这是好的但是hello,,
值为node
变量和world,,
我不想要的data
变量中的值。
更新和删除同样的事情。
有什么方法可以避免这种情况吗? 含义我想在data
变量中只看到节点变量和world
值中的hello
值,而不是用逗号分隔。
谁能帮我这个?
单击单选按钮,您只需为用户隐藏字段,但params仍然可见并通过POST请求发送。 在春天,具有相同名称的params被视为一个数组。 如果你不想发送具有相同名称的乘法参数,你不仅应该隐藏输入,还要删除它从jquery调用以下代码
$('#input-id').remove();
请记住,您还必须通过单击单选按钮来添加字段。 我找到了一个如何实现的例子: http : //jsfiddle.net/jaredwilli/tZPg4/4/
您可以在此处找到更多信息使用jQuery动态添加/删除输入字段
编辑
根据您的评论,我建议您使用此代码http://jsfiddle.net/tFLnd/
它要短得多,也许不是最好的,因为我刚刚写了它但是做了这个工作
当然,您必须将jQuery添加到您的页面才能使用此代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.