不幸的是,很难提供相关的细节,因为我不知道什么是相关的,所以这里是这样的:
我有一个旧的应用程序在Tapestry4上运行,我有一个继承了AnotherPage.java的BasePage。anotherPage.html还使用了各种自定义组件。
我最近尝试向BasePage.java添加几个方法,在这一点上,AnotherPage.java中的一个循环组件停止了正常工作--行为非常奇怪。似乎即使循环正确执行,@For循环索引仍保持为零。我最终通过消除过程找到了这个问题。每当BasePage和AnotherPage之间声明的方法数量超过大约108个方法(包括抽象方法)时,错误就开始显露出来。无论方法名是什么,或者是BasePage还是AnotherPage,似乎都无关紧要。
我不确定接下来要问什么问题。为什么会发生这种情况,接下来我可以查看哪些内容来诊断问题?
下面是来自AnotherPage的一些相关的tapestry 4代码...
<tr jwcid="@For" source="ognl:listDetails" value="ognl:detail" index="ognl:someIndex" volatile="ognl:true">
<span jwcid="@DetailComponent" detail="ognl:detail" detailList="ognl:listDetails" detailIndex="ognl:someIndex" ... /> 无可否认,DetailComponent会做一些我不理解的事情。它反过来包含某种类型的jwcid="this_or_that@Block“符号(还不确定这是什么意思),然后在这些符号中包含另一个组件:
<span jwcid="@GenericDetail" detail="ognl:detail"
detailList="ognl:detailList" ...
detailIndex="ognl:detailIndex" />(无论如何,我希望我有时间从Tapestry 4迁移出来,但我没有。)
感谢您的任何想法、建议,或者只是花时间阅读本文!
*注意,出于IP和etc许可的原因,我显然已经抽象出了实际系统的一些细节。
发布于 2017-09-19 06:02:02
我真的不太了解Tapestry (好家伙,我已经很久没有用过它了),但是在我的JSP时代(比Tapestry工作还要长的时间),我们学到了很难的东西,那就是Java对类中方法的数量(http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11)有64K的限制。在JSP中,它归结为<jsp:include page=””>和<%@ include file=”” %>。"@ include“变体在编译时引入页面,将其转换为正在编译的JSP上的方法。但jsp:include变体没有这种行为。我们只是到处跑,去掉了所有的"@ include“变体,”方法太多“的问题也就消失了。
我怀疑在您的Tapestry世界中,您正在与类似的限制作斗争:您的对象带来的依赖。我不确定您是否可以获得Tapestry内容编译的中间结果,但是您可能希望确认您没有越过这些JVM限制。
我已经准备好被否决而被遗忘了。
https://stackoverflow.com/questions/46106419
复制相似问题