我试图模块化我的JSTL代码。需要在JSP内的许多地方调用特定代码,因此我将其在单独的INC文件中分离出来。在我的JSP中,我使用<%@ include file="snippet.inc" %>
包含该文件。该代码段需要处理页面上下文中的某些变量,由调用者确定。
我将相关变量的 NAME 存储在名为__var
的变量中,该变量将由代码段使用。我们期望该代码段会读取并修改名称通过pageScope
传递的__var
中的实际变量。
JSP文件:
<c:set var="name1" value="Admin"></c:set>
<c:set var="name2" value="Moderator"></c:set>
<c:set var="__var" value="name1"></c:set>
<%@ include file="snippet.inc" %>
${name1}
<c:set var="__var" value="name2"></c:set>
<%@ include file="snippet.inc" %>
${name2}
INC文件:
<c:set var="__value" value="${pageScope[__var]}"></c:set>
<c:set var="${pageScope[__var]}"> Hello ${__value} </c:set>
第一行工作正常,我可以读取变量名的值。第二行不起作用,并抱怨我不能将表达式用作变量名。
如何处理此问题?
答案 0 :(得分:1)
这些东西让你意识到StackOverflow是多么美妙的东西!找到并修改了https://stackoverflow.com/a/8750411/1101040的解决方案以实现我的目标。
<c:set var="__value" value="${pageScope[__var]}"></c:set>
<c:set target="${pageScope}" property="${__var}"> Hello ${__value} </c:set>
全套! :)