问题标签 [stringtemplate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
666 浏览

java - MVC 和 Java-EE

这些年来,我越来越喜欢 Model-View-Controller 设计模式及其提供的好处。但是当涉及到 Web 应用程序时,我正在努力充分利用这些好处。

如果我要创建一个名为 UsersComponent 的组件,它包括:

  • 用户列表
  • 主动过滤此用户列表的文本字段

然后在 Java Swing 中,您可以轻松地创建一个扩展 JPanel 的 UserComponent 类,在 UserComponent 中,您可以创建模型、视图和控制类。你最终会得到一个非常容易重用的组件。

现在,我想做的是在 Java-EE 中模仿这一点。字符串模板似乎为此提供了解决方案。但是,有一个额外的转折。我喜欢网页设计师。而且我很乐意为他们提供添加组件的机会,而不必让开发人员参与进来,或者在他们应该使用的入口点上投入太多精力。

例如,假设我们有一个基本页面模板,并且设计者希望在此页面的某处添加 UserComponent 组件。然后,您将需要填充模型,在大多数情况下,基于一些请求参数。

所以,这是实际的问题。有谁知道确定给定模板中包含哪些模板的方法。因此,您可以在运行时(或者更确切地说,每次修改时)分析此模板,并在主页控制器中进行适当的内务管理?

基本上,所以我可以做到这一点:

  • 设计器创建一个字符串模板。说,MyPage.st
  • 重写模块将 www.mydomain.com/IgnoredFolderNameForSeo/MyPage 更改为 www.mydomain.com/pagerenderservlet?templateName=MyPage
  • 页面渲染 servlet 根据参数加载字符串模板,分析它以确定字符串模板中使用了哪些组件,并根据需要对其进行初始化。

目前,我能想出的最佳解决方案是为不同的基本页面提供不同的 servlet,从而公开不同的功能子集。但我对这个解决方案一点也不满意。如果有可能动态处理它,它会更整洁。基本上,拥有所有支持的组件的处理程序,但只初始化/处理实际需要的那些。

我很想听听你们对此的看法:)

** 更新 **

我认为我提到的摇摆使这个问题有点混乱。我想做的是创建组件,Web设计人员可以通过字符串模板使用这些组件,然后他们可以将其包含在任何给定的字符串模板中。

所以我想这一切都归结为这一点。

有没有人知道字符串模板框架,它让我在运行时确定字符串模板中包含哪些其他字符串模板。

0 投票
1 回答
1020 浏览

templates - 我在哪里可以下载使用 stringtemplate 的完整示例 java 项目?

http://www.antlr.org/wiki/display/ST4/StringTemplate+4+Wiki+Home , http://www.stringtemplate.org/

我查看了 wiki,我可能错过了所有树木中的森林,但我需要看到一个完全正常工作的 java 项目,而不是一堆剪辑。理想情况下,几个完整的项目(github?)包含:

  • 商业逻辑。
  • header.htm、body.htm 和 footer.htm。
  • 多个正文页面,因此您可以看到它们如何与 biz 逻辑交互。

谢谢。

0 投票
1 回答
1059 浏览

velocity - Java 模板引擎(如 StringTemplate、FreeMarker、Velocity 或 Tiles)中的 REST 支持?

我想比较一些支持创建 RESTful URL 的模板引擎,以便在 java 应用程序中对页眉/正文/页脚页面进行模板化。我不希望我的页面具有 jsp、.st 或 .ftl 扩展名。有没有人有示例应用程序的链接来说明如何使用任何流行的模板引擎设置 REST?

谢谢。

-约翰

0 投票
1 回答
916 浏览

antlr - ANTLR 模板翻译器匹配部分语法

我为一种语言编写了一个语法,现在我想处理一些语法糖结构,因为我正在考虑编写一个模板翻译器。

问题是我希望我的模板语法只翻译该语言的一些结构,其余部分保持原样。

例如:

我有这个作为输入:

我想把它翻译成类似的东西:

理想情况下,我想在 ANTLR 中做一些这样的想法

我希望它保留与规则 decl 不匹配的其余输入。

在不编写语言的完整语法的情况下,如何在 ANTLR 中实现这一点?

0 投票
1 回答
2751 浏览

java - 用于 PL/SQL 的 ANTLR 解析器,目标语言为 Java

我们有针对 Java 目标的 PL/SQL 语法吗?我得到了 C# 的,但需要 Java 目标。

我想将它与 ANTLR 一起使用,以使用 StringTemplates 生成 Java。我已经浏览了文档并对如何实现这一点有一个很好的理解,只是想检查是否有人已经做过这种事情。

0 投票
1 回答
557 浏览

rewrite - antlr 重写规则的输出

我正在尝试编写一个 antlr 脚本,其中 rule1 有一个子规则 rule2。我在规则 1 上使用 StringTemplate。

我想要做的是在规则1使用/使用它之前重组规则2匹配的文本。我怎么做 ?

这里“meth”是字符串模板调用

如果说子规则 4 匹配“select * from dual;”,我希望将其传递给 rule1“#sql (select * from dual);”。

这是我的实际代码,我希望将 select_statement 规则匹配的语句包装在“#sql()”中,并在“stats”列表中传递给“meth”模板的“body”属性:

0 投票
2 回答
1117 浏览

java - 为什么这个带有自定义分隔符的 StringTemplates 不起作用?

我正在尝试将字符串模板与自定义分隔符一起使用。

此代码片段:

throws org.stringtemplate.v4.compiler.STException,所以我显然做错了。

如果我将其更改为new ST("Hello $what$", '$', '$'),它可以工作。为什么@不工作?

编辑-我尝试了除$and之外的其他字符@,但$到目前为止什么都没有。这是怎么回事?

0 投票
2 回答
916 浏览

java - 我可以在 StringTemplate 中使用字符串分隔符吗?如果没有,什么是好的模板引擎?

我需要一个简单的模板引擎,它只替换变量名(我不需要其他功能),并且可以配置为使用字符串而不是字符的分隔符。例如

应该返回“Hello world”(java代码可以改变,我更关心模板语法)

我想要多字符分隔符的原因是我有几个可能包含各种字符的模板,并且想确保模板化文档(html、css、js)的本地语言不会与模板引擎冲突.

阅读这篇文章后,我尝试使用StringTemplate,但我不确定它是否支持超过一个字符的分隔符(构造函数ST似乎接受字符分隔符而不是字符串)。

StringTemplates 是否支持多字符分隔符?如果没有,是否有其他与我上面描述的模板语法一起使用的简单模板引擎的建议?

0 投票
1 回答
1514 浏览

java - Stringtemplate:是否可以将HashMap使用的模板应用到多值属性

我的 .stg 文件中有两个模板,它们都适用于多值 HashMap。HashMap 被用作注入对象。

而且我需要那些可以多次注入的HashMap实例。

我的麻烦是,当我切换到另一个模板时,ANTLR 似乎将第二个 HashMap 视为一个列表——多对象和空值。



我的 .g 文件的一部分显示:


我期望的结果是:


但是,我得到了:


如果我们用 FOO 替换 BAR,保持 FOO 和 BAR 使用相同的模板,输出是正确的,如下所示。


在文档中,“org.stringtemplate.v4.ST 中的同步 ST 添加(字符串名称,对象值)”说:

“如果您发送一个列表,然后注入单个值元素,add() 会复制原始列表并添加新值。”

HashMap 呢?StringTemplate 是否故意将 HashMap、键/值对访问、对象视为 List 和误注入的多值?

0 投票
3 回答
2914 浏览

java - StringTemplate 删除 < > 作为分隔符

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