简体   繁体   English

Tapestry5:尝试加载javascript文件

[英]Tapestry5 : Trying to load javascript file

I am stuck at really curious error. 我陷入了真正奇怪的错误。 I have a tapestry page in which I was trying to import a javascript file. 我有一个挂毯页面,我试图在其中导入一个javascript文件。 Previously, I was importing extjs-version3.js file(which worked perfect) and then I wanted to import extjs-version4.js file. 以前,我要导入extjs-version3.js文件(效果很好),然后想导入extjs-version4.js文件。 So, I removed the version3 file from file system, added version4 file to file system and changed my tapestry page's java code to import the version4 file. 因此,我从文件系统中删除了version3文件,将version4文件添加到文件系统中,并更改了挂毯页面的Java代码以导入version4文件。 But I always got the error, "version3 file does not exist"! 但是我总是收到错误消息,“ version3文件不存在”!

While debugging, I changed the java code of page so that it does not import ANY file now. 调试时,我更改了页面的Java代码,以使其现在不导入任何文件。

So, now I have a page that does not import any javascript file and I still get the error, "version3 file does not exists". 因此,现在我的页面没有导入任何javascript文件,但仍然出现错误“ version3文件不存在”。

Following are the exact details. 以下是确切的详细信息。

MyPage.java which imports the javascript file. 导入javascript文件的MyPage.java。

@Import(
        library = {
            //"context:js/lib/extjs3/adapter/ext/ext-base-debug.js", 
            //"context:js/lib/extjs3/ext-all-debug-w-comments-v4.js",
            /*"context:js/lib/ext_compat_layer/ext3-compat.js",
            "context:js/lib/ext_compat_layer/ext3-core-compat.js",*/
            //"context:js/page/ActivitiesTab.js",
            //"context:js/lib/extjs3/ux/gridSearch/Ext.ux.grid.Search.js",
            //"context:js/lib/extjs3/ux/gridSearch/Ext.ux.IconMenu.js",
            //"context:js/lib/extjs3/ux/gridSearch/Ext.ux.Toast.js"
        }, 
        stylesheet = {
            /*"context:js/lib/extjs3/resources/css/ext-all.css", 
            "context:js/lib/extjs3/resources/css/xtheme-gray.css",
            "context:js/lib/extjs3/resources/css/theme-gray/core.css",*/
            //"context:js/lib/extjs3/resources/css/icons.css",
            //"context:js/lib/extjs3/resources/css/gridsearch.css"
        }
    )

The stack trace of error I receive. 我收到的错误的堆栈跟踪。

An unexpected application exception has occurred.

    org.apache.tapestry5.ioc.internal.OperationException
    Unable to locate asset 'context:js/lib/extjs3/ext-all-debug-w-comments.js' (the file does not exist).

    trace
            Constructing instance of page class net.semandex.salsa.tapestry.pages.ActivitiesTab

    java.lang.RuntimeException
    Unable to locate asset 'context:js/lib/extjs3/ext-all-debug-w-comments.js' (the file does not exist).

    Hide uninteresting stack frames Stack trace
            org.apache.tapestry5.internal.services.AssetSourceImpl.getLocalizedAssetFromResource(AssetSourceImpl.java:135)
            org.apache.tapestry5.internal.services.AssetSourceImpl.getAssetInLocale(AssetSourceImpl.java:105)
            org.apache.tapestry5.internal.services.AssetSourceImpl.getAsset(AssetSourceImpl.java:85)
            org.apache.tapestry5.internal.transform.ImportWorker$5.map(ImportWorker.java:206)
            org.apache.tapestry5.internal.transform.ImportWorker$5.map(ImportWorker.java:203)
            org.apache.tapestry5.func.LazyMappedValue.get(LazyMappedValue.java:31)
            org.apache.tapestry5.func.LazyFlow.first(LazyFlow.java:52)
            org.apache.tapestry5.func.AbstractFlow$1.next(AbstractFlow.java:68)
            org.apache.tapestry5.func.AbstractFlow.toMutableList(AbstractFlow.java:47)
            org.apache.tapestry5.func.AbstractFlow.toMutableList(AbstractFlow.java:40)
            org.apache.tapestry5.func.AbstractFlow.toList(AbstractFlow.java:205)
            org.apache.tapestry5.internal.transform.ImportWorker.convertPathsToAssets(ImportWorker.java:202)
            org.apache.tapestry5.internal.transform.ImportWorker.access$100(ImportWorker.java:40)
            org.apache.tapestry5.internal.transform.ImportWorker$4.advise(ImportWorker.java:190)
            org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:86)
            net.semandex.salsa.tapestry.pages.ActivitiesTab.containingPageDidLoad(ActivitiesTab.java)
            org.apache.tapestry5.internal.structure.ComponentPageElementImpl$4.run(ComponentPageElementImpl.java:120)
            org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:977)
            org.apache.tapestry5.internal.structure.ComponentPageElementImpl.containingPageDidLoad(ComponentPageElementImpl.java:829)
            org.apache.tapestry5.internal.structure.PageImpl.loaded(PageImpl.java:171)
            org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:190)
            org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:174)
            org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
            org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
            org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063)
            org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:173)
            org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:81)
            org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:74)
            org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:55)
            org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2326)
            org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
            org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)
            org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
            org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:321)
            net.semandex.salsa.tapestry.services.AppModule$1.service(AppModule.java:164)
            org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
            org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:984)
            org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:974)
            org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
            org.apache.tapestry5.internal.services.URLRewriterRequestFilter.service(URLRewriterRequestFilter.java:50)
            org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
            org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:80)
            org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
            org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
            org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:272)
            org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
            org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
            org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
            org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:928)
            org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) 

MyPage.tml file is very simple and has nothing suspicious but I can post the code if needed. MyPage.tml文件非常简单,没有任何可疑之处,但是如果需要,我可以发布代码。

Why tapestry is trying to load a js file which is not included in any page? 为什么Tapestry尝试加载未包含在任何页面中的js文件?

Update: 更新:

Infact, irrespective of what I write in @Import annotation, the files are always imported according to the previous code. 实际上,无论我在@Import批注中写什么,文件总是根据先前的代码导入。 This is happening with all the pages. 所有页面都在发生这种情况。

This could be caused by some component in the template which fails to load the asset, or maybe a parent template that is extended by MyPage . 这可能是由于模板中的某些组件无法加载资产或由MyPage扩展的父模板引起的。

According to the stacktrace, the page net.semandex.salsa.tapestry.pages.ActivitiesTab is the cause of the problem. 根据net.semandex.salsa.tapestry.pages.ActivitiesTab ,页面net.semandex.salsa.tapestry.pages.ActivitiesTab是导致此问题的原因。 MyPage probably loads it somewhere. MyPage可能将其加载到某个地方。

Resolved now. 现在解决。 The problem was with my production environment and not in Tapestry. 问题出在我的生产环境中,而不是在Tapestry中。 Java class files were not updated by Eclipse when I changed them. 更改Java类文件时,Eclipse并未对其进行更新。 Because of this, javascript files were imported based on the previous code in java file of the page. 因此,基于页面Java文件中的先前代码导入了javascript文件。

Eclipse reported following problem. Eclipse报告了以下问题。 "The project was not built due to "Could not delete '/someName/bin/". Fix the problem, then try refreshing this project and building it since it may be inconsistent" I referred this question and solved my problem. “由于“无法删除'/ someName / bin /”,所以未构建该项目。解决该问题,然后尝试刷新并构建该项目,因为它可能不一致。”我提到了这个问题,并解决了我的问题。

Simple refresh, clean/publish did not solve my problem. 简单的刷新,清除/发布并不能解决我的问题。 I had to close the Eclipse and restart the PC. 我必须关闭Eclipse并重新启动PC。 This fixed my environment and now Eclipse is updating the java classes properly. 这修复了我的环境,现在Eclipse正在正确更新Java类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM