ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:
Posted
技术标签:
【中文标题】ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:【英文标题】:ERROR errors.GrailsExceptionResolver - ConcurrentModificationException occurred when processing request: 【发布时间】: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 我发布了编译后的文件。希望对您有所帮助。
【参考方案1】:
这个错误看起来很像资产管道中的this one。
您应该删除previewCard.gsp
中的所有//=require
,然后解决导致错误的问题。
【讨论】:
删除所有需要是什么意思? 在你的 CSS 和 js 文件中你是否使用了assetpipeline? 尝试从 css 中删除这些错误,看看错误是否被隔离到单个错误。 好吧,但我需要它们。 是的,只是尝试缩小导致问题的原因,您在 CSS 文件中没有对 JS 的引用吗?以上是关于ERROR errors.GrailsExceptionResolver - 处理请求时发生 ConcurrentModificationException:的主要内容,如果未能解决你的问题,请参考以下文章
新浪微博Error_code: 400; Error: 40022:Error: source paramter(appkey) is missing的解决方法
Error 500--Internal Server Error如何解决
在 MySQL 中出现 ERROR 1701、ERROR 1452 和 ERROR 1305 错误 - 需要一些专业知识