【问题标题】:Can I use JSTL <c:if> to allow a certain number of user inputs我可以使用 JSTL <c:if> 来允许一定数量的用户输入吗
【发布时间】:2016-09-17 22:42:03
【问题描述】:

我试图让用户决定他们想要添加多少笔记。如果用户决定出现 0,则出现 0 输入框,如果 1 则出现 1,等等。我尝试使用以下代码执行此操作,使用 and 。它不工作。我需要先让用户提交他们的选择吗

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

【问题讨论】:

  • JSTL 标签在服务器上运行,之前 任何 HTML 被发送到浏览器。用户在组合框中选择值发生在浏览器上, HTML 已从服务器发送。如果要根据用户选择进行动态更改,则必须用 JavaScript 编写,在浏览器中运行。不能是服务器上运行的JSTL。
  • @Andreas 说过,我也会。 JSP 就像“PHP”,它在服务器上运行,客户端永远不会收到任何 JSP 语言的东西。如果您想要客户端的动态行为,则需要使用 Javascript。

标签: jsp jstl el


【解决方案1】:

看起来这将属于服务器与客户端脚本。

您的所有&lt;c:if&gt; 条件都可以如下优化。 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2016-10-07
    • 2013-10-21
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多