1

我有一个 servlet S,它从 JSP A 中捕获选择字段选项值的请求参数并将其存储在请求范围内。

String test = request.getParameter("option");
    request.setAttribute("select",test);

现在这个 servlet S 在处理后再次将我重定向到同一个 JSP A,现在在 JSP AI 中有相同的选项字段,而且我有类似的代码,

 <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:when 并且它直接进入 else 部分。

虽然我广泛使用了 JSTL,但由于某些原因,我无法解决这个问题。我知道请求范围中存在价值,并且可以通过 c:out 标记看到它。我们是否有可能再次将帖子返回到同一页面并再次使用新值进行同一会话?已经在这个问题上花了一天时间,所以需要第三只眼来看看我是否错过了一些愚蠢的东西?欣赏是否有人可以看看。

4

1 回答 1

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>

也可以看看:

于 2013-01-31T02:02:18.903 回答