【问题标题】:StringTemplate remove < > as delimitersStringTemplate 删除 < > 作为分隔符
【发布时间】:2011-12-13 13:54:07
【问题描述】:

我正在尝试在 Java Web 应用程序中使用 StringTemplate 来生成 html 电子邮件。尝试输入换行符时,我使用 \&lt;br\&gt; 这似乎不起作用。 \&lt;b\&gt; 无法正常工作。有没有办法关闭 作为分隔符,以便我可以测试这是否是问题?在整个 StringTemplate 文档中,它都说使用 $...$ 作为分隔符,但没有说明如何不使用 <...>

【问题讨论】:

    标签: java html stringtemplate stringtemplate-4


    【解决方案1】:

    创建组时,您可以使用

    设置分隔符
    STGroup group = new STGroupDir("emails", '$','$');
    

    “$”和“$”是您的分隔符。

    【讨论】:

    • 我仍然不断收到invalid character '&lt;'。你确定它真的禁用&lt;作为分隔符吗?
    • 见下方 Dan 的answer。如果 st 文件中没有 ST 标头,请改用 STRawGroupDir。
    【解决方案2】:

    虽然 Lumpy 确实正确地回答了这个问题,但他并没有解决我遇到的问题,所以我想我会在这里为未来的读者添加我的解决方案。

    即使您在 STGroupDir 中创建了一个 x.st 文件,并且您希望将其加载到程序中并在某个时间进行渲染,您也必须在该文件中定义语法(就像在 @987654323 中一样) @) 像这样:

    x(variables, go, here) ::= "this uses $variables$ such as $go$ and $here$"
    

    请注意,语法应与文件同名(当然要减去.st 扩展名)。

    如果您的模板中有很多引号,或者如果您不想在文件顶部包含模板的声明,或者如果您想要一个非常长的模板,这会很不方便。在这些情况下,您应该使用STRawGroupDir。缺点是模板文件的顶部没有中心位置来命名所有必须传入的变量。

    【讨论】:

      【解决方案3】:

      您可以在模板组文件 (.stg) 的顶部放置:

      delimiters "$", "$"
      

      ...或任何你想要的分隔符。更多信息位于: https://theantlrguy.atlassian.net/wiki/display/ST4/Group+file+syntax

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多