如何在spring中使用ApacheVelocity

balp4ylt  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(234)

标题几乎描述了我的问题,我不想手动渲染每个模板,但不知道如何让它们自动渲染。我使用的是SpringBoot版本,其中velocity支持已经不存在了,我对这个版本一无所知 spring-velocity-support 来自apache的包。
我试过这个:

@GetMapping("/test")
    fun test(context: VelocityContext) : Template {
        context.put("test", "Hello World!")

        return Velocity.getTemplate("views/templates/index.vm")
    }

这是一个豆子:

@Bean("velocityEngine")
open fun getVelocityBean() : VelocityEngineFactoryBean {
    val properties = Properties()

    if (System.getenv("IS_LOCAL").toBoolean()) {
        // load templates from file for instant-reload when developing
        properties.setProperty(RuntimeConstants.RESOURCE_LOADERS, "file")
        properties.setProperty(
            RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
            "${System.getProperty("user.dir")}/api/src/main/resources/"
        )
    } else {
        // load templates from jar
        properties.setProperty(RuntimeConstants.RESOURCE_LOADERS, "class")
        properties.setProperty(
            "resource.loader.class.class",
            "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"
        )
    }

    Velocity.init(properties) // For manual rendering

    val velocity = VelocityEngineFactoryBean()
    velocity.setVelocityProperties(properties)

    return velocity
}

但这只是返回了一个(字面上)无休止的json,并抛出了一个 JsonMappingException 因为无限递归

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题