【问题标题】:JSTL choose tag not working for correctlyJSTL 选择标签无法正常工作
【发布时间】:2023-03-21 20:18:01
【问题描述】:

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

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:when,而是直接进入 else 部分。

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

【问题讨论】:

    标签: jsp servlets jstl


    【解决方案1】:

    这是错误的。

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

    另见:

    【讨论】:

    • 哈哈,Balus 的话很有魔力。刚才我又试了一次,现在它工作了。我想知道为什么它之前没有工作。
    • 不客气。请注意更新的答案,以更简单的方式。至于为什么它不起作用,显然你没有运行/测试你认为你正在运行/测试的代码:)
    • 也许你是对的 Balus,我一直在花几个小时做一些愚蠢的错误,也许我需要更多地关注。这对我来说是至关重要的工作,因为我想减少我正在开发的 jsp 的数量.我将使用您的其他模块的解决方案。非常感谢。
    • 不客气。我建议按照链接。它们可能包含有价值和启发性的信息。
    • 我会做 Balus.Thanks.
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2017-04-07
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多