在使用动态包含时,是否可以从一个JSP中调用方法?

问题描述 投票:0回答:1

我需要在JSP中调用另一个JSP中定义的方法,该方法应该动态包含(包含页面)而不是静态(包含文件),但是我得到一个jsp编译错误“方法未定义”。当我使用<%@ include file =“”%>时,它工作正常。

我需要这个的原因是我们的JSP最终变得太大而我们得到这个错误:“方法_jspService(HttpServletRequest,HttpServletResponse)的代码超过65535字节限制”(因此需要动态地包含其他jsps),因此我们将它的一些功能分成更小的JSP。

Foo.jsp

<%@page language="java"%>
<%!

public String getSomeID(String param) throws Exception {
    return "someId";
}

%>

Bar.jsp

<jsp:include page="Foo.jsp"></jsp:include>

String id = getSomeID(param);

我知道这里更好的选择是使用预处理servlet。我们可能会这样做。但是,就目前而言,我只想知道是否有可能在动态包含它的同时从另一个jsp调用方法。

java jsp servlets
1个回答
0
投票

如果您使用jsp:include执行此操作,则无法从Bar.jsp中的Foo.jsp引用代码。

在这种情况下,这两个页面都被编译成场景后面的独立servlet。我们称它们为Foo_Servlet和Bar_Servlet。

在这种情况下实际发生的情况如下:处理请求时Bar_Servlet将控制和原始请求传递给Foo_Servlet。一旦Foo_Servlet完成,Foo_Servlet(而不是原始jsp代码)的执行响应就与Bar_Servlet的响应相结合。

© www.soinside.com 2019 - 2024. All rights reserved.