2014-03-02 2 views
0

프로젝트 중 하나에서 Spring MVC 컨트롤러를 사용하고 있습니다.스프링 MVC 컨트롤러에 데이터가있는 텍스트 상자 값을 전달하는 방법은 무엇입니까?

다음은 3 개의 라디오 버튼이 표시 될 JSP 코드입니다. 하나는 Insert이고 두 번째 라디오 버튼은 Update이고 세 번째 라디오 버튼은 Delete입니다.

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

이 컨트롤러 코드 - 나는 Insert 라디오 버튼을 클릭하면

, 그것뿐만 아니라 다른 두 개의 라디오 버튼과 두 개의 텍스트 라디오 버튼을 삽입 옆의 상자와 같은 일을 보여

Insert 라디오 버튼을 클릭하고 첫 번째 텍스트에 Hello을 입력하고 두 번째 텍스트 상자에 World을 입력 한 다음 제출 버튼을 클릭하면 그 후이 표시됩니다변수의 값이 name이 좋지만 hello,, 값이 node이고 world,, 값이 data 변수에 있습니다.

업데이트 및 삭제와 동일한 문제.

이 문제를 방지 할 수있는 방법이 있습니까? 노드 변수에 hello 값만 표시되고 쉼표로 구분되는 대신 data 변수에 값이 표시됩니다.

아무도 도와 줄 수 있습니까?

+2

이름이 "node"이고 이름이 3 인 3 개의 입력 텍스트 상자가 있기 때문이다 이름이 "data"인 텍스트 상자를 입력하면 삽입, 업데이트 및 삭제를 위해 "노드"및 "데이터"텍스트 상자를 다시 사용할 수 있습니까? 그래서 각자 1 명 밖에 없습니까? 표시/숨기기 자바 스크립트에서 라디오 버튼을 그냥? – indybee

+0

@indybee : 좋은 지적이지만 어떻게 작동할까요? Radion 버튼을 삽입, 업데이트 또는 삭제를 클릭 할 때마다 두 개의 텍스트 상자를 표시해야합니까? 이게 아직도 작동할까요? 가능하다면 이것을위한 예제를 제공 할 수 있습니까? – AKIWEB

+0

을 클릭하면 표시되지 않고 DOM- – arahant

답변

2

라디오 버튼을 클릭하면 사용자 필드가 숨겨 지지만 매개 변수는 계속 표시되며 POST 요청을 통해 전송됩니다. 같은 이름의 봄 매개 변수는 배열로 간주됩니다. 당신은 당신이 입력을 숨길 수 있지만

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


당신이 라디오 버튼을 클릭하여 필드를 추가 서비스도 있습니다 것을 기억 JQuery와

에서 다음 코드를 호출 제거해야합니다뿐만 아니라 동일한 이름을 가진 다중 PARAMS를 보낼 해달라고합니다. 그것은 훨씬 더 짧은 아마 http://jsfiddle.net/jaredwilli/tZPg4/4/
더 많은 정보를 원하시면 당신은 내가 당신이 코드 http://jsfiddle.net/tFLnd/
를 사용하도록 권 해드립니다 귀하의 코멘트에 따르면 여기 Add/remove input field dynamically with jQuery

편집
을 찾을 수 있습니다 나는 그것을하는 방법을 예를 발견 나는 지금 쓴 것이기 때문에 최선의 일을한다.
물론이 코드를 사용하려면 페이지에 jQuery를 추가해야한다.

+0

감사합니다 상어. 내 코드 기반에서 어떤 변경을해야합니까? 어떤 생각? – AKIWEB

+0

게시물의 응답 – shark

+0

나는 항상 동일한 입력이 추가되었음을 알 수 있습니다 :) 실제로는 항상 그 사실을 보여주고 추가 매개 변수를 보내십시오. 같은 입력을 숨길 이유가 없습니다 – shark

관련 문제