0

这些是我在标签文件中的第一步。也许这个问题很简单。但我无法解决。

我有以下标签文件

<% 
Foo foo=new Foo();
%>
<jsp:include page="${foo.getFileName()}"/>

在我看来,jasper 没有看到 foo 变量。我究竟做错了什么?

4

3 回答 3

0

使用表达式语言,${...}您的变量必须可以在其中一个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()}"/>
于 2013-11-21T11:49:02.323 回答
0

${some variable name} 从范围内获取变量名,例如请求/会话/应用程序。

但是您的 foo 对象尚未在任何范围内设置。

只是为了试一试,use session.setAttribute("foo", foo)或者pageContext.setAttribute(...) 在scriptlet里面试一试。

现在只需尝试了解范围以及哪个范围更适合您的应用程序。

于 2013-11-21T11:50:08.467 回答
0

在这里,scrptletfoo无法识别<jsp:include/> EL

使用<jsp:useBean/>操作<jsp:include/>作为 EL使用

 <jsp:useBean id="foo"  class="packeage.Foo"  scope="page"/>
 <jsp:include page="${foo.fileName}"/>
于 2013-11-21T11:51:07.850 回答