根据很多聪明人在这里,我想用于输出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