我有一个servlet S,它从JSP A中捕获select字段选项值的request参数,并将其存储在请求范围内。
String test = request.getParameter("option");
request.setAttribute("select",test);
现在这个servlet S在处理之后再次将我重定向到同一个JSP A,现在在JSP A中我有相同的选项字段,而且我的代码类似于,
<select name="option">
<c:choose>
<c:when test="${select} == All">
<option id="id" class="cl" value="All" selected>Items</option>
</c:when>
<c:otherwise>
<option id="id" class="cl" value="All">All Items</option>
</c:otherwise>
</c:choose>
</select>
但由于某些原因,代码永远不会进入c:何时直接进入其他部分。
虽然我已经广泛使用了JSTL,但由于某些原因我无法解决这个问题。我知道请求范围中存在价值,并且可以通过c:out tag看到它。我们是否有可能将帖子返回到相同的页面一次又一次地使用新值进行相同的会话?已经花了一天时间在这个问题上,所以需要第三眼看看我是否遗漏了一些愚蠢的东西?感谢有人可以看看。
答案 0 :(得分:2)
这是错误的。
<c:when test="${select} == All">
整个表达式必须在${}
内,并且需要引用字符串。
<c:when test="${select == 'All'}">
无关具体问题,您可以通过更简单的方式解决您的具体功能需求,而不需要servlet需要复制参数:
<select name="option">
<option id="id" class="cl" value="All" ${param.option == 'All' ? 'selected : ''}>All Items</option>
</select>