代码之家  ›  专栏  ›  技术社区  ›  Damo

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

  •  1
  • Damo  · 技术社区  · 17 年前

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

    我在考虑一组预定义的变量,比如:
    @BOOKING_NUMBER@
    @INVOICE_NUMBER@

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

    “这是一些预订文本 @订票号码@ 这是我需要的”

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

    “这是我需要的预订10001的文本”

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

    感谢阅读!

    D

    2 回复  |  直到 17 年前
        1
  •  2
  •   belugabob    17 年前

    看看java。文本MessageFormat——尤其是format方法——因为这正是为您所寻找的内容而设计的。

    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 这似乎更适合这个目的——这篇评论完全基于初步调查,因为我没有在愤怒中使用它。

        2
  •  0
  •   Mitchel Sellers    17 年前

    我以前使用过类似的代币系统。我个人喜欢这样的东西。

    [MYVALUE]

    因为用户很容易输入,然后我就用替换来交换真实数据的令牌。