我可以使用JSTL <c:if>来允许一定数量的用户输入

时间:2016-09-17 22:42:03

标签: jsp jstl el

我试图让用户决定他们想要添加多少笔记。如果用户决定0,则显示0个输入框,如果为1则为1,等等。我尝试使用以下代码执行此操作,使用和。它不起作用。我是否需要先让用户提交他们的选择

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

1 个答案:

答案 0 :(得分:0)

看起来这将属于Server vs Client Scripting。

您的所有<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>