[英]I can pass a variable from a JSP scriptlet to JSTL but not from JSTL to a JSP scriptlet without an error
以下代碼導致錯誤:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
resp = resp + test;
pageContext.setAttribute("resp", resp);
%>
<c:out value="${resp}"/>
錯誤說
"error a line 4: unknown symbol 'test'".
如何將test
從JSTL代碼傳遞到JSP scriptlet?
腳本是嵌入在頁面代碼中的原始Java,如果您在腳本中聲明變量,那么它們將成為嵌入在頁面中的局部變量。
相比之下,JSTL完全可以使用page
, request
或session
范圍內的范圍屬性。 您需要重新編寫腳本以將其作為屬性進行test
:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
String test = pageContext.getAttribute("test");
resp = resp + test;
pageContext.setAttribute("resp", resp);
%>
<c:out value="${resp}"/>
如果查看<c:set>
的文檔,將會看到可以將scope
指定為page
, request
或session
,並且默認為page
。
更好的是,根本不要使用scriptlet:它們會使嬰兒耶穌哭泣。
@skaffman釘牢了它。 他們各自生活在自己的環境中。 不過,我不會考慮使用小腳本作為解決方案。 您想避免它們。 如果您只想連接EL中的字符串,而您發現+
運算符對EL中的字符串失敗(這是正確的),則只需執行以下操作:
<c:out value="abc${test}" />
或者,如果要從另一個名為${resp}
作用域變量獲取abc
,請執行以下操作:
<c:out value="${resp}${test}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.