我的应用程序中有一些小部件。我想将它们加载到单个页面中。它在顺序加载时始终有效,但是在并行加载时会失败(引发exception-java.lang.IllegalStateException-无法请求请求属性-请求不再有效!)。我想念什么吗?还有其他并行加载方式吗?请提出建议。这是我的代码片段
class TestController {
def widget1() {
render "Widget 1"
}
def widget2() {
render "Widget 2"
}
}
class ManagerController {
def loadSequential(){
def data = [:]
data['view1'] = g.include(action: 'widget1', controller: 'test')
data['view2'] = g.include(action: 'widget2', controller: 'test')
render data['view1']
render data['view2']
}
def loadParallel(){
def data = [:]
PromiseMap pm = new PromiseMap()
pm['view1'] = { g.include(action: 'widget1', controller: 'test') }
pm['view2'] = { g.include(action: 'widget2', controller: 'test') }
def result = pm.get()
render result['view1']
render result['view2']
}
}
最佳答案
这是我在这件事上的2便士。
我们已经尽力使Grails并行呈现页面,但是我们无法使其工作。在深入研究之后,我们只是发现Grails还没有准备好这种东西。它的构建方式始终是线程专有的。
我想说这都是由于org.codehaus.groovy.grails.web.pages.GroovyPageOutputStack
尚未准备好进行并发访问。
我会看一下这个空间,以防万一有人设法使其正常工作。
关于grails - Grails并行加载小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35910236/