2016-09-17 8 views
0

사용자가 추가 할 노트 수를 결정하도록 허용하려고합니다. 사용자가 0을 결정하면 0 입력 상자가 나타나고, 1이면 1 등이됩니다. 및을 사용하여 다음 코드로이 작업을 시도했습니다. 작동하지 않습니다. 사용자가 먼저 선택을 제출하도록해야합니까?JSTL <c:if>을 사용하여 특정 사용자 입력 수 허용

<td><select name="numberNotes" id="numberNotes"> 
<option value='0'>0</option> 
<option value='1'>1</option>  
<option value='2'>2</option> 
<option value='3'>3</option> 
<option value='4'>4</option>  
<option value='5'>5</option> 
</select></td> 

<c:set var="userChoice" scope="session" value="${numberNotes}"/> 
<c:if test="${userChoice == '0'}"> 
</c:if> 
<c:if test="${userChoice == '1'}"> 
<td>Note 1: </td><td><input type="text" name="notes" /></td> 
</c:if> 
<c:if test="${userChoice == '2'}"> 
<td>Note 1: </td><td><input type="text" name="notes" /></td> 
<td>Note 2: </td><td><input type="text" name="notes" /></td> 
</c:if> 
<c:if test="${userChoice == '3'}"> 
<td>Note 1: </td><td><input type="text" name="notes" /></td> 
<td>Note 2: </td><td><input type="text" name="notes" /></td> 
<td>Note 3: </td><td><input type="text" name="notes" /></td> 
</c:if> 
<c:if test="${userChoice == '4'}"> 
<td>Note 1: </td><td><input type="text" name="notes" /></td> 
<td>Note 2: </td><td><input type="text" name="notes" /></td> 
<td>Note 3: </td><td><input type="text" name="notes" /></td> 
<td>Note 4: </td><td><input type="text" name="notes" /></td> 
</c:if> 
<c:if test="${userChoice == '5'}"> 
<td>Note 1: </td><td><input type="text" name="notes" /></td> 
<td>Note 2: </td><td><input type="text" name="notes" /></td> 
<td>Note 3: </td><td><input type="text" name="notes" /></td> 
<td>Note 4: </td><td><input type="text" name="notes" /></td> 
<td>Note 5: </td><td><input type="text" name="notes" /></td> 
</c:if> 
+2

브라우저에 HTML이 전송되기 전에 * JSTL 태그가 서버에서 실행됩니다. 콤보 박스에서 값을 선택하는 사용자는 HTML이 서버에서 전송 된 후 브라우저에서 발생합니다. 사용자 선택에 따라 동적으로 변경하려면 브라우저에서 실행되는 JavaScript로 작성해야합니다. 서버에서 JSTL을 실행할 수 없습니다. – Andreas

+1

@ Andreas가 말했어, 나도 그렇게 할거야. JSP는 "PHP처럼", 서버에서 실행되며, 클라이언트는 JSP 언어에서 아무 것도받지 못합니다. 클라이언트에 대한 동적 동작을 원하면 Javascript를 사용해야합니다. – AxelH

답변

0

서버 대 클라이언트 스크립팅에 해당됩니다.

모든 <c:if> 조건은 다음과 같이 최적화 할 수 있습니다. 여기서 endcount 선택 목록에서 변수 값을 채워야합니다. (jquery/javascript 함수가 필요할 수도 있음)

<c:set var="endcount" value="5" /> 
<tr> 
<c:forEach begin="1" end= "${endcount}" varStatus="loopCounter"> 
<td>Note <c:out value="${loopCounter.index}" /> : </td><td><input type="text" name="notes" /></td><br/> 
</c:forEach> 
</tr>