当前位置: 首页 > 知识库问答 >
问题:

Grails从2. x升级到3. x。升级后Ajax不渲染模板

柯新翰
2023-03-14

我正在将grails应用程序从grails 2.5.4升级到3.1.9,我在ajax调用方面遇到了问题。

我有gsp模板在我的应用程序中使用ajax请求从服务器异步加载数据。这里是其中一个。

下面的javascript调用激活ajax请求。

$(document).ready(function () {

    $(".chosen-select").chosen();
    $(".automaticAjaxLoad").each(function () {


        var url = $(this).attr("ajaxLoadingUrl");

        if (url != "") {

            $(this).load(url);
        }
    });
});

这将成功调用以下控制器操作。

def getLocalitiesWithCount() {
    def localitiesList = Locality.list(sort: "posOrder", order: "desc")
    def localitiesCountList = []
    localitiesList.each { locality ->
        def c = JobOffer.withCriteria() {
            createAlias("positionLocality", "_positionLocality", CriteriaSpecification.LEFT_JOIN)
            eq("_positionLocality.id", locality.id)
            //between("l.accessDate", today, today + 1)

            gt('willExpire', new Date())
            isNotNull('datePublished')

            projections {
                // countDistinct("id")
                rowCount()
            }
        }
        def jobCountMap = [:]

        jobCountMap.put("i18NameFull", locality.i18NameFull)
        jobCountMap.put("i18Name", locality.i18Name)
        jobCountMap.put("id", locality.id)
        jobCountMap.put("name", locality.name)
        jobCountMap.put("count", c.first())

        localitiesCountList.push(jobCountMap)

        log.error('Localities count ' + localitiesCountList.size());

    }
    render(view: '/ajax/localitiesWithCount', model: [localitiesCountList: localitiesCountList])
}

直到这一刻,一切都按预期进行。比它应该呈现以下gsp模板,但它没有。该属于它的地方空着,控制台没有错误

<h4> ${message(code: "localities.header")} </h4>
    <hr>


        <ul style="font-size: 85%; margin: 0; list-style: none;">
            <g:each in="${localitiesCountList}"
                    status="i" var="localityInstance">

                <g:if test="${localityInstance.count != 0}" >
                <li>

                    <g:link controller="jobOffer" action="index" params="[positionLocalities: localityInstance.id]">
                        <h8>
                            ${message(code: localityInstance.i18NameFull)}

                         [${localityInstance.count}]
                        </h8>
                    </g:link>

                </li>

                </g:if>

            </g:each>

        </ul>

我不得不重新将资源插件中的资产加载到资产管道中,所以我想可能会有问题,但我不知道问题出在哪里。有什么想法吗?

共有1个答案

高锦
2023-03-14

因为你想要渲染一个模板(例如超文本标记语言的片段,而不是完整的页面),你应该使用渲染(模板:'/ajax/localitiesBackCount',模型:[localitiesCountList: localitiesCountList])并确保你的GSP被命名为_localitiesWithC<-plhd--0/>因为所有模板都必须以下划线开头。

 类似资料:
  • 本文档将帮助你从 Element 2.x 升级至 Element Plus. 不兼容更新 以下是不兼容更新的列表 本文档有待完善,目前请参考这里的 不兼容更新列表。

  • 如果您打算升级一个早先版本的 Jekyll,那么一些发生在 1.0 及 2.0 版本中的相关变化,您需要首先了解下。 在我们开始动手之前,请先获取最新版本的 Jekyll: $ gem update jekyll 立即开始 想快速构建并运行一个全新的 Jekyll 站点吗?那么只要执行 jekyll new SITENAME 即可!该命令会创建一个包含了 Jekyll 最基础框架的文件夹。 Jek

  • 我将应用程序迁移到了laravel 5.7。在composer.json中安装软件包时,我将“maatwebsite/excel:~2.1.0”升级到“maatwebsite/excel”:“^3.1”。因此,现在我的导出功能不再工作。我尝试在中跟踪升级https://docs.laravel-excel.com/3.1 但不适用于我。这是旧版本中使用的旧代码:

  • 类名修改 StrUtils -> StrUtil FileUtils -> FileUtil ClassKits -> ClassUtil EncryptCookieUtils -> CookieUtil RequestUtils -> RequestUtil ArrayUtils -> ArrayUtil JbootHttpKit -> HttpUtil @JBootRPCService ->

  • 从 Rax 0.x 升级为 Rax 1.x,需要注意以下事项: render 变更 import { createElement, render } from 'rax'; import UniversalDriver from 'driver-universal'; ... // 需在 render 方法中指定 Driver 进行渲染 render(<App />, document.body,

  • 老版本的Flask-SocketIO有完全不同的一系列依赖包。老版本依赖gevent-socketio和gevent-websocket,这些包 1.0 版本都不需要了。 尽管依赖的改变,但是 1.0 版本却没有太多重要的改变。下面是一个实际改变的详细的清单: * 1.0 版本放弃支持Python 2.6,增加了对Python 3.3, Python 3.4 和 pypy 的支持。 * 0.x 版