Java JSTL c:设置未按预期工作

Java JSTL c:设置未按预期工作,java,jstl,Java,Jstl,我有一个JSTL循环,试图检查给定变量是否为空,是否有动态变量名。当我使用带有页面范围的c:set时,if语句无法访问该变量。但是,当我使用设置它时,变量是可用的 <% pageContext.setAttribute("alphaParA", "test"); pageContext.setAttribute("alphaParF", "test"); int i = 0; %> <ul class="alphadex_links"> <c:forEach

我有一个JSTL循环,试图检查给定变量是否为空,是否有动态变量名。当我使用带有页面范围的c:set时,if语句无法访问该变量。但是,当我使用
设置它时,变量是可用的

<%
pageContext.setAttribute("alphaParA", "test");
pageContext.setAttribute("alphaParF", "test");
int i = 0;
%>
<ul class="alphadex_links">
    <c:forEach var="i" begin="0" end="25" step="1" varStatus="status">
        <c:set var="currentLetter" scope="page">&#${i+65}</c:set>
        <c:set var="currentPar" scope="page">alphaPar${currentLetter}</c:set>
        <% pageContext.setAttribute("currentPar", "alphaPar" + (char)('A' + i++)); %>
        <li>
            <c:choose>
                <c:when test="${not empty pageScope[currentPar]}">

    &#${i+65} alphaPar${currentLetter}

当我删除pageContext.setAttribute块时,测试总是失败的,但是A和F的测试会成功,就像在块中时一样。我很困惑,在任何地方都找不到帮助。

它失败了,因为HTML在JSTL运行时没有运行。您实际上是在向它传递一个Java字符串
A
,而不是所需的字符
a
,该字符将基于HTML实体
A当Web浏览器在Java/JSP/JSTL完成其工作后检索和解析HTML时。请注意,您的HTML实体缺少结束分号,但这不是具体问题的原因

至于具体的功能要求,对不起,你在EL上运气不好。它不支持
char
。您的最佳选择是处理以下字符串:


${pageScope[currentPar]}

如果需要,只需在Java end中自动生成字母作为
String[]
,并将其设置为应用程序属性。

谢谢,这是我需要知道的。