【问题标题】:ERROR errors.GrailsExceptionResolver - ConcurrentModificationException occurred when processing request:ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:
【发布时间】:2015-10-24 06:37:42
【问题描述】:

我有一个 Grails 2.4.5 GSP 页面,它加载了两个 iFrame:

<iframe scrolling="no"
            src="${createLink(controller:'admin', action:'page1', id: serviceCard.id)}"></iframe>
<iframe scrolling="no"
            src="${createLink(controller:'admin', action:'page2', id: serviceCard.id)}"></iframe>

每隔一秒重新加载一次左右,我就会遇到以下问题。请注意,这并不总是发生。

在我的 GSP 上,我看到错误 500。控制台显示以下错误:

2015-08-01 21:41:11,530 [http-nio-8080-exec-3] ERROR errors.GrailsExceptionResolver  - ConcurrentModificationException occurred when processing request: [GET] /test/adminServiceCard/previewCard/4b6dc4730fd3acd80a
Stacktrace follows:
Message: Error processing GroovyPageView: Error executing tag <asset:stylesheet>: null
    Line | Method
->>  527 | doFilter         in /grails-app/views/adminServiceCard/previewCard.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Caused by GrailsTagException: Error executing tag <asset:stylesheet>: null
->>    6 | doCall           in /grails-app/views/adminServiceCard/previewCard.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Caused by ConcurrentModificationException: null
->> 1456 | sort             in java.util.ArrayList
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    175 | sort             in java.util.Collections
|    145 | fileNameWithoutExtensionFromArtefact in asset.pipeline.AssetHelper
|     99 | loadRequiresForTree in asset.pipeline.DirectiveProcessor
|     76 | getFlattenedRequireList in     ''
|     83 | getDependencyList in asset.pipeline.AssetPipeline
|     79 | doCall . . . . . in asset.pipeline.grails.AssetsTagLib$_closure2
|      6 | doCall           in Users_mg_Documents_Grails_GGTS3_6_3_test_grails_app_views_adminServiceCard_previewCard_gsp$_run_closure1
|     10 | run . . . . . .  in Users_mg_Documents_Grails_GGTS3_6_3_test_grails_app_views_adminServiceCard_previewCard_gsp
|    198 | doFilter         in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter . . . . in grails.plugin.cache.web.filter.AbstractFilter
|     53 | doFilter         in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|     62 | doFilter . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|     46 | doFilterInternal in org.grails.jaxrs.web.JaxrsFilter
|   1142 | runWorker . . .  in java.util.concurrent.ThreadPoolExecutor
|    617 | run              in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run . . . . . .  in java.lang.Thread

编辑:这里是adminServiceCardpreview_gsp.groovy.gsp的内容:

import org.codehaus.groovy.grails.plugins.metadata.GrailsPlugin
import org.codehaus.groovy.grails.web.pages.GroovyPage
import org.codehaus.groovy.grails.web.taglib.*
import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
import org.springframework.web.util.*
import grails.util.GrailsUtil

class gsp_majestella_adminServiceCardpreview_gsp extends GroovyPage {
public String getGroovyPageFileName() { "/WEB-INF/grails-app/views/adminServiceCard/preview.gsp" }
public Object run() {
Writer out = getOut()
Writer expressionOut = getExpressionOut()
registerSitemeshPreprocessMode()
printHtmlPart(0)
createTagBody(1, {->
printHtmlPart(1)
invokeTag('javascript','g',5,['library':("jquery"),'plugin':("jquery")],-1)
printHtmlPart(1)
invokeTag('stylesheet','asset',7,['src':("perfect-scrollbar/perfect-scrollbar.min.css")],-1)
printHtmlPart(2)
invokeTag('javascript','asset',8,['src':("perfect-scrollbar/perfect-scrollbar.jquery.min.js")],-1)
printHtmlPart(2)
invokeTag('javascript','asset',9,['src':("jquery.cycle.all.js")],-1)
printHtmlPart(1)
invokeTag('stylesheet','asset',11,['src':("preview.css")],-1)
printHtmlPart(3)
})
invokeTag('captureHead','sitemesh',13,[:],1)
printHtmlPart(4)
createTagBody(1, {->
printHtmlPart(5)
if(true && (showCard == true)) {
printHtmlPart(6)
if(true && (serviceCard.imageItems)) {
printHtmlPart(7)
expressionOut.print(createLink(controller:'image', action:'getImage', id:serviceCard.imageItems[0].id, absolute:true))
printHtmlPart(8)
}
printHtmlPart(9)
expressionOut.print(serviceCard?.title)
printHtmlPart(10)
expressionOut.print(serviceCard?.company?.name)
printHtmlPart(11)
}
printHtmlPart(12)
if(true && (showDetail == true)) {
printHtmlPart(13)
loop:{
int i = 0
for( imageItem in (serviceCard.imageItems) ) {
printHtmlPart(14)
expressionOut.print(createLink(controller:'image', action:'getImage', id:imageItem.id, absolute:true))
printHtmlPart(15)
i++
}
}
printHtmlPart(16)
expressionOut.print(raw(serviceCard.description))
printHtmlPart(17)
}
printHtmlPart(18)
})
invokeTag('captureBody','sitemesh',116,[:],1)
printHtmlPart(19)
}
public static final Map JSP_TAGS = new HashMap()
protected void init() {
    this.jspTags = JSP_TAGS
}
public static final String CONTENT_TYPE = 'text/html;charset=UTF-8'
public static final long LAST_MODIFIED = 1438521220000L
public static final String EXPRESSION_CODEC = 'html'
public static final String STATIC_CODEC = 'none'
public static final String OUT_CODEC = 'none'
public static final String TAGLIB_CODEC = 'none'
}

我该如何解决这个问题?

【问题讨论】:

  • 堆栈跟踪指向视图 adminServiceCard/previewCard.gsp。那个文件里有什么?
  • @EmmanuelRosa 我用文件更新了我的帖子。
  • 糟糕,虽然这可能会有所帮助,但我请求的文件有误。 GSP 页面被反编译成 Groovy 代码。那就是要与堆栈跟踪行号匹配的文件。该文件应该类似于 target/work/gspcompile/gsp_SOMETHING_adminServiceCardpreviewCard_gsp.groovy。如果文件不存在,请尝试运行 grails compile ---gsp
  • 是的,文件不存在。 gspcompile 文件夹不存在。
  • @EmmanuelRosa 我发布了编译后的文件。希望对您有所帮助。

标签: html grails gsp


【解决方案1】:

这个错误看起来很像资产管道中的this one

您应该删除previewCard.gsp 中的所有//=require,然后解决导致错误的问题。

【讨论】:

  • 删除所有需要是什么意思?
  • 在你的 CSS 和 js 文件中你是否使用了assetpipeline?
  • 尝试从 css 中删除这些错误,看看错误是否被隔离到单个错误。
  • 好吧,但我需要它们。
  • 是的,只是尝试缩小导致问题的原因,您在 CSS 文件中没有对 JS 的引用吗?
猜你喜欢
  • 2015-10-20
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多