我使用websphere 8和RAD 8,这个scriptlet输出正确的值:
<%= ansokanInfo.getPSystem() %>
但是使用EL它什么都不输出:
${ansokanInfo.PSystem}
我可以在${
和}
之间写任何内容,但不会呈现。我究竟做错了什么?应该怎么做才能启用EL表达式?这也不起作用:
<c:out value="${ansokanInfo.PSystem}" />
但这有效:
<c:forEach var="i" begin="1" end="5" > <c:out value="${i}" /> </c:forEach>
我的web.xml像这样开始:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" 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_2_5.xsd">
答案 0 :(得分:2)
Scriptlets 和EL不共享相同的变量范围。 Scriptlet 变量在JSP主体中声明,而EL变量应该设置为页面,请求,会话或应用程序范围的属性。
因此,要使EL中的ansokanInfo
可用,您需要在其中一个范围内设置它。假设它表示请求范围数据,请执行以下操作:
request.setAttribute("ansokanInfo", ansokanInfo);
在对此变量进行首次EL评估之前,您可以在 scriptlet 中执行此操作。但更明智的做法是在预处理servlet中执行此操作。
要正确学习和理解这些概念,请查看我们在强制性主题上的维基页面: