coldfusion - 包含 JSP 文件的函数在 Lucee 但不是 ACF 中返回空结果
问题描述
我有一个函数利用include
JSP 文件的 , 来检索线程信息,然后将其转换为查询对象。该函数返回一个空查询 Lucee,但它在 ColdFusion 中正确执行。
CFML:
<cffunction name="mainThreads" output="false" returntype="query" access="public">
<cfargument name="filterPages" type="boolean" required="true">
<cfscript>
var threadStackDump = "";
var thread = 0;
var stackTrace = "";
request.threads = arraynew(1);
GetPageContext().include("putParentThreadInRequestScope.jsp");
ThreadQuery = QueryNew("id, name, group, stacktrace, alive", "Integer, VarChar, VarChar, VarChar, Bit");
QueryAddRow(ThreadQuery, arrayLen(request.threads));
for ( thread = 1; thread lte arrayLen(request.threads); thread = thread + 1 )
{
QuerySetCell(ThreadQuery, "id", request.threads[thread].getId(), thread);
QuerySetCell(ThreadQuery, "name", request.threads[thread].getName(), thread);
QuerySetCell(ThreadQuery, "group", request.threads[thread].getThreadGroup().getName(), thread);
QuerySetCell(ThreadQuery, "alive", request.threads[thread].isAlive(), thread);
threadStackDump = "";
stackTrace = request.threads[thread].getStackTrace();
for ( element = 1; element lte arrayLen(stackTrace); element = element + 1 )
if ( arguments.filterPages )
{
if ( findNoCase('runPage',stackTrace[element]) neq 0 or findNoCase('runFunction',stackTrace[element]) neq 0 )
threadStackDump = threadStackDump & stackTrace[element] & "#chr(13)#";
}
else
threadStackDump = threadStackDump & stackTrace[element] & "#chr(13)#";
QuerySetCell(ThreadQuery, "stacktrace", threadStackDump, thread);
}
return ThreadQuery;
</cfscript>
</cffunction>
JSP
<%
ThreadGroup threadGroup = Thread.currentThread().getThreadGroup();
Thread threadList[]=new Thread[Thread.activeCount()];
threadGroup.enumerate(threadList);
request.setAttribute("threads", threadList);
%>
该代码在 Lucee 中不起作用,但我不确定为什么。它与java版本有关吗?
解决方案
我猜你忘了在 web.xml 中启用 .jsp 处理,但是......你不知道它,因为问题代码在抑制所有输出的 cffunction 内执行!
从故障排除 101 中学习并以小块的形式测试问题代码。include
从单独执行 JSP 开始。如果它在屏幕上显示 JSP 代码,而不是执行它,那么您知道 JSP 处理未启用,这就是您的问题。
<cfscript>
GetPageContext().include("putParentThreadInRequestScope.jsp");
writeDump( request );
</cfscript>
推荐阅读
- ios - Firebase Analytics Xamarin iOS - 调试视图
- python - python中的SQL递归
- php - Laravel Eloquent 创建相关项目不保存
- java - 在不依赖数据库 oracle 的用户名和密码的情况下启动 spring-boot 应用程序?
- r - 根据具有不同大小的另一个数据框在数据框上添加新列
- asp.net-core - ASP.NET Core Web API 中的上传文件百分比
- javascript - 如何在Javascript中制作对象的深层副本
- powershell - POWERSHELL GET-ADUSER 在变量中显示错误?
- apache-kafka-streams - 全局 KTable 存储限制
- python - 从字典值分组并从其他组中删除重复项