2

我想构建一个功能,使之类:

void MyIncludeCompile(String TheFile) {
  "%><%@include file="+TheFile+"%><%";
}

我想获得一个替代方案,包括构建我自己的方法或函数的指令。

就像是:

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, TheFile, out, false);

但是,它适用于某些东西:

void MyIncludeRun(String TheFile) {
  %><jsp:include page="+TheFile+"/><%";
}

换句话说,在翻译时间而不是运行时间。如您所见:运行时的include 操作与使用纯 java 代码的操作等效。

是否有替代指令

4

1 回答 1

0

我的回答是否定的。例如,您可以实现自己的包含标签<my:include file="theFile"/>并将您自己的逻辑放入标签处理程序类中,但它不能在翻译时执行。在翻译时,JSP 被转换为常规的 java 文件——Servlet更准确地说是转换为子类。只有指令(和声明)才能对 servlet 类进行任何更改(脚本和表达式将代码放入服务方法,标签在运行时处理)。我不知道 的实现细节JspRuntimeLibrary,但由于 include 方法的签名包含请求和响应对象,我认为它也包括运行时的资源。

于 2013-11-05T21:16:52.173 回答