1

我有一个基于 Java 的 Web 应用程序和一个新要求,即允许用户将变量放入在生成文档或其他输出时被替换的文本字段中。其他人是如何处理这件事的?

我正在考虑使用一组预定义的变量,例如:
@BOOKING_NUMBER@
@INVOICE_NUMBER@

然后,当用户输入一些文本时,他们可以指定一个内联变量(从模式或类似中选择它)。例如:

“这是我需要的一些预订文本@BOOKING_NUMBER@

在生成一些使用此文本的输出(例如 PDF)时,我会做一个正则表达式并找到所有变量并将它们替换为正确的值:

“这是我需要的 Booking 10001 的一些文本”

我最初的想法是类似于 Freemarker,但我认为这对我的用户来说太复杂了,需要他们知道我的 DataModel (eww)。

谢谢阅读!

D.

4

2 回答 2

2

看看 java.text.MessageFormat - 特别是格式方法 - 因为它是专为您正在寻找的东西而设计的。

IE

MessageFormat.format("This is some text for booking {0} that is needed by me, for use with invoice {1}", bookingNumber, invoiceNumber);

您甚至可能希望从资源包中获取模板文本,以支持多种语言,并增加处理 {0} 和 {1} 在某些语言中可能以不同顺序出现的事实的能力。

更新:我刚刚正确阅读了您的原始帖子,并注意到有关 PDF 的评论。这表明模板文本将明显大于一两行。

在这种情况下,您可能想要探索类似StringTemplate 之类的东西,它似乎更适合此目的 - 此评论仅基于初步调查,因为我没有在愤怒中使用它。

于 2008-10-28T15:40:54.137 回答
0

我以前使用过类似的替换令牌系统。我个人喜欢类似的东西。

[我的价值]

因为用户很容易输入,所以我只是使用替换来将令牌换成真实数据。

于 2008-10-28T15:04:33.477 回答