这是我在标记文件中的第一步。也许这个问题非常简单。但我无法解决它。
我有以下标记文件
<%
Foo foo=new Foo();
%>
<jsp:include page="${foo.getFileName()}"/>
在我看来,碧玉没有看到foo变量。我做错了什么?
答案 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}"/>