现在,我的应用程序应该能够编写特定的 Fre-6ren">
gpt4 book ai didi

java - 在 Freemarker 中转义宏参数值

转载 作者:行者123 更新时间:2023-11-30 10:00:28 24 4
gpt4 key购买 nike

考虑下面的宏

<#macro subject text>
${_mail.setSubject(text)}
</#macro>

和示例用法:

<@mail.subject text="MyEmailSubject124" />
<@mail.subject text="${initiator!'<unknown>'}: Subject with interpolation" />

现在,我的应用程序应该能够编写特定的 Freemarker 模板文件,包括带有该宏的行。但是,“文本”参数值是通过 UI 从用户输入中检索的。所以在构建模板文件内容时,我有类似的代码

"<@mail.subject text=\"" + escape(userInput) + "\" />"

但是我应该如何对参数值进行转义呢?

我尝试使用 freemarker.template.utility 包中的 StringUtil.FTLStringLiteralEnc(subject, '"') 但这对插值示例不起作用,因为它产生

<@mail.subject text="$\{initiator!'\lunknown\g'}: Subject with interpolation" />

并且插值没有完成。我没有找到这里要使用哪种转义。

最佳答案

从您的问题来看,您似乎打算允许用户输入任意 FreeMarker 表达式,因为您打算允许 ${expression}。然后用户在userInput中使用了FTL语法,所以转义是没有意义的。如果用户有权输入任意表达式,则只有他们知道该表达式的含义,以及从何处转义其中的内容。 (如果你想阻止用户输入表达式,转义是有意义的,这就是 FTLStringLiteralEnc 所做的。)

关于java - 在 Freemarker 中转义宏参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57954021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com