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

时间:2008-10-28 14:52:39

标签: java web-applications variables user-input

我有一个基于Java的Web应用程序和一个新要求,允许用户将变量放入文本字​​段中,这些字段在生成文档或其他输出时被替换。别人怎么回事呢?

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

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

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

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

“这是我需要的预订10001的一些文字”

我最初的想法就像Freemarker,但我认为这对我的用户来说太复杂了,并且要求他们知道我的DataModel(eww)。

感谢阅读!

d

2 个答案:

答案 0 :(得分:2)

查看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的内容,这似乎更适合此目的 - 此评论仅基于初步调查,因为我没有在愤怒中使用它。

答案 1 :(得分:0)

之前我使用过类似的替换令牌系统。我个人喜欢像。

[myvalue的]

由于用户很容易输入,然后我只使用替换来替换真实数据的令牌。