根據很多聰明人在這裏,我想用於輸出Java變量的語法EL:
${var}
而不是<%=var%>
。帶EL的Jsp顯示常量字符串,但不能顯示變量
要打開EL上,我用:
在web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" metadata-complete="true" id="WebApp_ID">
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-enabled>true</el-enabled> // IntelliJ says these
<scripting-enabled>true</scripting-enabled> // two tags are not allowed here
</jsp-property-group>
</jsp-config>
在根JSP頁面的開始和包括jsp頁面:
<%@ page isELIgnored="false" %>
但是當我在包含的或根頁面中使用時:
<%
String mapName = request.getParameter("mapName");
Map<String,String> map = (Map<String,String>) request.getAttribute(mapName);
%>
${map.get("header")}
${"-?-"}
<%System.out.println("header = " + map.get("header"));%>
,那麼第一個${}
沒有輸出。第二個工作正常,println()
打印好了。
我該如何讓EL來解析${var}
構造?
關於可能的重複。通過@BalusC提到的問題,很有趣,但有很大的不同:
- 這不是關於Java變量和常量的可比行爲,但只有scriptlet而變量,已經寫在
request.attributes
或request.parameters
。 - 與答案一起,這一切都與JSTL有關。現在,在2017年,我使用沒有JSTL的EL。我正在一個大型項目中工作,我無法添加使用的技術,也沒有寫出幾篇論文!
所以,這下面的回答@ElMahdiBenzekri的對我來說是非常有用的,(我只是想從他那裏得到更多的信息),並且兩個問題,答案,由BalusC提到的,可能是非常有趣自我教育的意識,但是,對不起,對我的問題絕對無用。
的「地圖」是一個java變量,已經得到了來自請求屬性。注意println()可以正確打印其內容。我已經把問題代碼放到了地圖上。 – Gangnus
我在這裏閱讀過這篇文章,認爲$ {}構造適用於閱讀java變量。這是不是真的?無論如何,感謝你和+1爲我提供了一個新的方法來獲取JSP頁面上的值。 – Gangnus