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



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

我需要这个的原因是我们的JSP最终变得太大,我们得到这个错误:"方法_jspService(HttpServletRequest,HttpServletResponse(的代码超过了65535字节的限制"(因此需要动态包含其他jsp(,因此我们将它的一些功能拆分为较小的JSP。

傅.jsp

<%@page language="java"%>
<%!
public String getSomeID(String param) throws Exception {
    return "someId";
}
%>

酒吧.jsp

<jsp:include page="Foo.jsp"></jsp:include>
String id = getSomeID(param);

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

您无法在

Bar 中引用 Foo .jsp 中的代码.jsp如果你使用 JSP:Include 这样做。

在这种情况下,这两个页面都在后台编译成独立的 servlet。让我们称它们为Foo_ServletBar_Servlet

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

相关内容

最新更新