簡體   English   中英

我可以將變量從JSP腳本傳遞到JSTL,但不能從JSTL傳遞到JSP腳本,而不會出現錯誤

[英]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完全可以使用pagerequestsession范圍內的范圍屬性。 您需要重新編寫腳本以將其作為屬性進行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指定為pagerequestsession ,並且默認為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM