如何从标记文件中的scriptlet获取变量

时间:2013-11-21 11:45:52

标签: jsp jsp-tags tagfile

这是我在标记文件中的第一步。也许这个问题非常简单。但我无法解决它。

我有以下标记文件

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

在我看来,碧玉没有看到foo变量。我做错了什么?

3 个答案:

答案 0 :(得分: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()}"/>

答案 1 :(得分:0)

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

但是你的foo对象还没有在任何范围内设置。

只需在scriptlet中尝试use session.setAttribute("foo", foo)pageContext.setAttribute(...) ,然后尝试。

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

答案 2 :(得分:0)

此处,foo <jsp:include/>无法识别scrptlet EL

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

 <jsp:useBean id="foo"  class="packeage.Foo"  scope="page"/>
 <jsp:include page="${foo.fileName}"/>