2014-02-24 145 views
0

我正在使用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"; 
      break; 
     case "Update": 
      document.getElementById("inserts").style.display = "none"; 
      document.getElementById("updates").style.display = "inline"; 
      document.getElementById("delete").style.display = "none"; 
      break; 
     case "Delete": 
      document.getElementById("inserts").style.display = "none"; 
      document.getElementById("updates").style.display = "none"; 
      document.getElementById("delete").style.display = "inline"; 
      break; 
     } 
    } 
</script> 
<body> 
    <form method="post" action="testOperation"> 

     <input type="radio" name="tt" value="Insert" 
      onclick="doDisplay(this);" /> Insert <input type="hidden" name="name" value="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 <input type="hidden" name="name" value="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 <input type="hidden" name="name" value="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> 

現在我所要做的,一旦是我點擊Insert單選按鈕,它會告訴我兩個文本框旁邊Insert單選按鈕。然後在這兩個文本框中添加一些值後,我按下表單上的提交按鈕。然後它去testOperations方法,其中name領域擁有這些很多東西 -

insert,update,delete

我怎樣才能迫使它只有一個,我現在只是點擊場? Meaing如果我是點擊插入單選按鈕,那麼名稱變量應該有插入值?下面是我的方法 -

@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; 
    } 

意義,假設我點擊插入單選按鈕,然後鍵入Hello在第二個文本框的第一個文本和World,然後我會點擊提交按鈕,在那之後我應該看到insertname變量和hellonode變量和worlddata變量。

同樣的事情更新和刪除。

這可能嗎?

回答

0

你做得正確。所有你需要做的是點擊單選按鈕設置名稱上的值。一個隱藏的變量就足夠了。你的HTML部分這個樣子的,

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

而且在腳本中,

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

希望這有助於。

+0

謝謝Vinoth。我有點困惑的HTML部分,你能提供完整的HTML,我應該使用?我不知道我應該在哪裏使用這個隱藏的輸入?而且,我所看到的是在我的'node'變量中,值是用逗號'aw ,,',如果我只在插入文本框中輸入值.. – AKIWEB

+0

我已經更新了我的上面的答案。 –

0

你有相同名稱的輸入,你不需要其他的隱藏。單個節點和數據輸入足夠 這個HTML是不夠的:

<input type="radio" name="tt" value="Insert" onclick="doDisplay(this);" /> Insert<br/> 
<input type="radio" name="tt" value="Update" onclick="doDisplay(this);" /> Update<br/> 
<input type="radio" name="tt" value="Delete" onclick="doDisplay(this);" /> Delete<br/> 
<label for="Node"> Node </label> <input type="text" name="node" size="20" /><br/> 
<label for="Data"> Data </label> <input type="text" name="data" size="100"/><br/> 
<input type="submit"> 

這裏是控制器功能:

public Map<String, String> testOperations(
     @RequestParam(value="tt", required=false) String name, 
     @RequestParam(value="node", required=false) String node, 
     @RequestParam(value="data", required=false) String data) { 
    //... 
} 
相關問題