我有一个基于 Java 的 Web 应用程序和一个新要求,允许用户将变量放入文本字段中,这些变量在生成文档或其他输出时会被替换。其他人对此做了什么?
我正在考虑有一组预定义的变量,例如:
@BOOKING_NUMBER@
@INVOICE_NUMBER@
然后,当用户输入一些文本时,他们可以指定一个内联变量(从模式或类似模式中选择它)。例如:
“这是我需要的预订 @BOOKING_NUMBER@
的一些文字”
当生成一些使用此文本的输出(例如 PDF)时,我会执行正则表达式并找到所有变量并将它们替换为正确的值:
“这是我需要的预订 10001 的一些文本”
我最初的想法是类似 Freemarker 的东西,但我认为这对我的用户来说太复杂了,需要他们了解我的 DataModel (eww)。
感谢您的阅读!
D.
最佳答案
看看 java.text.MessageFormat - 特别是格式方法 - 因为它正是为您正在寻找的内容而设计的。
即
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 的内容。这似乎更适合这个目的 - 此评论仅基于初步调查,因为我没有在愤怒中使用它。
关于java - 如何在 Web 应用程序中最好地实现用户可选变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/243617/