这些是我在标签文件中的第一步。也许这个问题很简单。但我无法解决。
我有以下标签文件
<%
Foo foo=new Foo();
%>
<jsp:include page="${foo.getFileName()}"/>
在我看来,jasper 没有看到 foo 变量。我究竟做错了什么?
使用表达式语言,${...}
您的变量必须可以在其中一个PageContext, Request, Session, Application...
范围内访问。
为了使您的代码正常工作,您必须将其更改为:
<%
Foo foo=new Foo();
pageContext.setAttribute("foo", foo);
%>
<jsp:include page="${foo.getFileName()}"/>
如果您使用的是标签文件,那么可能更喜欢jspContext
而不是pageContext
:
<%
Foo foo=new Foo();
jspContext.setAttribute("foo", foo);
%>
<jsp:include page="${foo.getFileName()}"/>
${some variable name} 从范围内获取变量名,例如请求/会话/应用程序。
但是您的 foo 对象尚未在任何范围内设置。
只是为了试一试,use session.setAttribute("foo", foo)
或者pageContext.setAttribute(...)
在scriptlet里面试一试。
现在只需尝试了解范围以及哪个范围更适合您的应用程序。
在这里,scrptletfoo
无法识别<jsp:include/>
EL
使用<jsp:useBean/>
操作<jsp:include/>
作为 EL使用
<jsp:useBean id="foo" class="packeage.Foo" scope="page"/>
<jsp:include page="${foo.fileName}"/>