Java JSTL c:设置未按预期工作
我有一个JSTL循环,试图检查给定变量是否为空,是否有动态变量名。当我使用带有页面范围的c:set时,if语句无法访问该变量。但是,当我使用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
设置它时,变量是可用的
<%
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[]
,并将其设置为应用程序属性。谢谢,这是我需要知道的。