簡體   English   中英

如何將具有數據的文本框值傳遞給spring MVC控制器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM