Java 如何将包含数据的文本框值传递给spring MVC控制器?

Java 如何将包含数据的文本框值传递给spring MVC控制器?,java,javascript,spring,jsp,spring-mvc,Java,Javascript,Spring,Jsp,Spring Mvc,我正在我的一个项目中使用SpringMVC控制器 下面是我的JSP代码,其中将显示三个单选按钮。一个是Insert,第二个单选按钮是Update,第三个单选按钮是Delete 单击“插入”单选按钮后,它会在“插入”单选按钮旁边显示两个文本框,另外两个单选按钮也是如此- <script type="text/javascript"> function doDisplay(radio) { switch (radio.value) { case "Insert":

我正在我的一个项目中使用SpringMVC控制器

下面是我的JSP代码,其中将显示三个单选按钮。一个是
Insert
,第二个单选按钮是
Update
,第三个单选按钮是
Delete

单击“插入”单选按钮后,它会在“插入”单选按钮旁边显示两个文本框,另外两个单选按钮也是如此-

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

功能显示(收音机){
开关(无线电值){
案例“插入”:
document.getElementById(“inserts”).style.display=“inline”;
document.getElementById(“更新”).style.display=“无”;
document.getElementById(“删除”).style.display=“无”;
document.getElementById(“dynamicName”).value=“插入”;
打破
案例“更新”:
document.getElementById(“inserts”).style.display=“无”;
document.getElementById(“更新”).style.display=“内联”;
document.getElementById(“删除”).style.display=“无”;
document.getElementById(“dynamicName”).value=“更新”;
打破
案例“删除”:
document.getElementById(“inserts”).style.display=“无”;
document.getElementById(“更新”).style.display=“无”;
document.getElementById(“删除”).style.display=“内联”;
document.getElementById(“dynamicName”).value=“删除”;
打破
}
}
插入节点数据

更新节点数据
删除节点数据
下面是控制器代码-

   @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;
    }
@RequestMapping(value=“testOperation”,method=RequestMethod.GET)
公共映射测试操作(){
最终地图模型=新LinkedHashMap();
收益模型;
}
@RequestMapping(value=“testOperation”,method=RequestMethod.POST)
公共映射testOperations(@RequestParam字符串名称,
@RequestParam字符串节点,
@请求参数(字符串数据){
最终地图模型=新LinkedHashMap();
System.out.println(名称);
System.out.println(节点);
系统输出打印项次(数据);
收益模型;
}
假设我单击
Insert
单选按钮,在第一个文本中键入
Hello
,在第二个文本框中键入
World
,然后我将点击submit按钮,然后我在
name
变量中看到
Insert
值,这很好,但是
Hello,,
节点中的值变量和
世界,
数据中的值变量,我不想要它

更新和删除也是如此

有没有办法避免这种情况?这意味着我只希望在节点变量中看到
hello
值,在
data
变量中看到
world
值,而不是用逗号分隔


有人能帮我吗?

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

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

请记住,您还必须通过单击单选按钮来为添加字段提供服务。我找到了一个例子来说明如何:
更多信息也可以在这里找到

编辑
根据您的评论,我建议您使用此代码

它要短得多,可能不是最好的一个,因为我刚刚写了它,但是做这项工作
当然你必须将jQuery添加到你的页面才能使用此代码

我认为这是因为有3个name=“node”的输入文本框和3个name=“data”的输入文本框,你能重复使用“node”和“data”文本框进行插入、更新和删除吗,所以每个都只有一个?在javascript中只显示/隐藏单选按钮?@indybee:这是一个很好的观点,但这将如何工作?每当我单击“插入”、“更新”或“删除收音机”按钮时,我需要显示两个文本框?这还能用吗?如果可能的话,你能提供一个例子吗?单击,不要显示隐藏,而是尝试从中添加或删除DOM@arahant:我不知道怎么做?如果可能的话,你能根据我的代码提供一个相同的例子吗?谢谢shark。我应该在代码库中做什么更改。?有什么想法吗?我还可以看到,总是有相同的输入添加:)也许只是总是显示它,并发送额外的参数,就像你实际上做的那样。没有理由隐藏同样的输入:很抱歉这么晚才回复。。非常感谢你的帮助。是的,它适用于
节点
数据
变量,如
testOperations
方法中问题中的上述代码所示。。但是
name
变量中的值是空的。。如果我单击
插入单选按钮
,则应显示
插入
;如果我单击
更新单选按钮
,则应显示
更新
,与删除相同。。你知道我们怎么解决这个问题吗?