gpt4 book ai didi

java - 如何将包含数据的文本框值传递给 Spring MVC Controller ?

转载 作者:行者123 更新时间:2023-12-02 06:07:51 24 4
gpt4 key购买 nike

我在我的一个项目中使用 Spring MVC Controller 。

下面是我的 JSP 代码,其中将显示三个单选按钮。第一个是插入,第二个单选按钮是更新,第三个单选按钮是删除

一旦我单击插入单选按钮,它会在“插入”单选按钮旁边显示两个文本框,并且其他两个单选按钮也显示相同的内容 -

<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>

下面是 Controller 代码 -

   @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,, 变量和 data 变量中的 world,, 值是我不想要的。

更新和删除也是如此。

有什么办法可以避免这种情况吗?这意味着我只想看到节点变量中的 hello 值和 data 变量中的 world 值,而不是用逗号分隔。?

谁能帮我解决这个问题吗?

最佳答案

单击单选按钮您只是隐藏用户字段,但参数仍然可见并通过 POST 请求发送。在 spring 中,具有相同名称的参数被视为数组。如果您不想发送具有相同名称的多个参数,您不仅应该隐藏输入,还应该从 jquery 调用以下代码将其删除

$('#input-id').remove();


请记住,您还必须通过单击单选按钮来添加字段。我找到了一个如何做到这一点的例子: http://jsfiddle.net/jaredwilli/tZPg4/4/
您也可以在这里找到更多信息 Add / remove input field dynamically with jQuery

编辑
根据您的评论,我建议您使用此代码 http://jsfiddle.net/tFLnd/
它更短,也许不是最好的,因为我刚刚写了它,但完成了工作
当然,你必须将 jQuery 添加到你的页面才能使用此代码

关于java - 如何将包含数据的文本框值传递给 Spring MVC Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com