2009-05-21 2 views
1

양식을 서블릿 (java)에 제출하려고합니다. 양식에는 여러 가지 질문이 있으며 각 질문에는 4 개의 라디오 버튼이 있으며 사용자는 그 중 하나를 선택합니다. 나는 형태로있을 질문의 수를 모른다. 그것은 10, 15, 12 일 수 있습니다 ... 다른 기준에 따라 다릅니다. 내 질문은 양식에있는 질문에 대해 사용자가 선택한 선택 목록을 검색하는 가장 좋은 방법입니다.동적으로 (알 수없는) 필드 수가있는 양식을 제출하는 방법

답변

0

일반적인 기술은 공통 접두어로 필드 이름을 지정한 다음 존재하지 않는 필드에 도달 할 때까지 q000, q001, q002 등을 반복합니다. 내 마음에 오는

1

빠른 트릭은 n의 값에 숨겨진 입력 유형을

"question_"+n 

모든 필드의 이름을 지정하고하는 것입니다. 폼에 제시 할 질문의 수를 알 수있는 방법이 있으면 n 값을 설정하는 방법이 있어야합니다.

나중에는 그 가치와 ... 검색

n = new Integer(request.getParameter("number_of_question")); 
for(int i = 0 ; i < n ; i++) { 
     list.add(request.getParameter("question_"+i)); 
    } 

이 내 마음에 오는 제일 먼저

2

당신은 HttpServletRequest.getParameterNames은()의 이름의 열거를 검색하는 데 사용할 수 있습니다 요청 내의 모든 양식 요소 그런 다음 열거를 반복하고 HttpServletRequest.getParameter (name)를 사용하여 각 요소의 개별 값을 요청할 수 있습니다.

옵션 라디오 버튼 이외의 다른 FORM 요소가 HTML에 포함되어있는 경우 매개 변수 이름을 열거하면서 요청할 항목을 알 수 있도록이 라디오 버튼의 똑똑한 이름 지정 규칙을 사용하십시오.

예.

양식은 다음과 같은 두 가지 옵션이 질문이 포함 된 경우 : 서블릿에서

Question 1: 
<input type="radio" name="question1" value="option1"> 
<input type="radio" name="question1" value="option2"> 
<input type="radio" name="question1" value="option3"> 

Question 2: 
<input type="radio" name="question2" value="option1"> 
<input type="radio" name="question2" value="option2"> 
<input type="radio" name="question2" value="option3"> 

Enumeration e = request.getParameterValues(); 
while(e.hasMoreElements()){ 
    String name = (String)e.nextElement(); 
    if(name.startsWith("question"){ 
     String value = request.getParameter(name); 
     //your logic here 
    } 

} 

같은 일을 또 다른입니다 : 서블릿에서

,

int maxQuestionNumber = Integer.parseInt (request.getParameter ("maxQuest ionNumber ")); // 폼의 최대 질문을 나타내는 HTML 폼의 숨겨진 변수 여야합니다.

for(int i=1;i<=maxQuestionNumber;i++){ 
    String value = request.getParameter("question"+i); 
    //your logic here.. 
} 
1

해결 방법이 없습니다. 이 Scenerio에서는 ServletRequest.getParameterMap()이 도움이 될 것입니다. 지도의 키는 String 유형이고 값은 String [] 유형입니다.

따라서,이 같은 Foreach 루프 뭔가를 사용하여지도를 통해 아주 쉽게 루프,

for(Map.Entry<K, V> entry : map.entrySet()){ 
    .. 
    if(entry.getValue().length > 1){ 
     //means the choices not the question 
    }else{ 
     //means the question not the choices 
    } 
} 

나는 그것이 도움이 될 희망 할 수 있습니다.

0

POST를 사용하면 JSON을 사용하여 서블릿에 문자열을 전달할 수 있습니다.이 문자열은 매우 긴 문자열을 처리 할 수 ​​있습니다. 그렇게하면 매개 변수가 복잡하더라도 원하는대로 전달할 수 있습니다.

관련 문제