java - 如何在 Web 应用程序中最好地实现用户可选变量

标签 java web-applications variables user-input

我有一个基于 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/

相关文章:

javascript - 用于登录的本地存储

java - @PreAuthorize 不适用于方法安全规则和方法参数

iphone - iPhone 上的 Web 应用程序 - 将其样式设置为看起来像 native iPhone 应用程序

javascript - 个体变量与对象

java - 是否可以将资源文件放入 JAR 文件中?

javascript - 如何将自定义图标添加到 Angular2 primeng Tree

javascript - 小语法问题

java - 自动化测试框架

java - 使用keytool的 keystore 中 "key password"的意义是什么

java - 在记分板代码中使用什么单链表或数组?