Как лучше всего реализовать выбираемые пользователем переменные в веб-приложении - PullRequest
1 голос
/ 28 октября 2008

У меня есть веб-приложение на основе Java и новое требование, позволяющее пользователям размещать переменные в текстовые поля, которые заменяются при создании документа или другого вывода. Как другие пошли на это?

Я думал о наличии заранее определенного набора переменных, таких как:
@BOOKING_NUMBER@
@INVOICE_NUMBER@

Затем, когда пользователь вводит какой-то текст, он может указать встроенную переменную (выбрать ее из модального или аналогичного). Например:

"Это какой-то текст для бронирования @BOOKING_NUMBER@, который мне нужен"

При создании некоторого вывода (например, PDF), который использует этот текст, я бы сделал регулярное выражение и нашел бы все переменные и заменил бы их правильным значением:

"Это какой-то текст для бронирования 10001, который мне нужен"

Моей первоначальной мыслью было что-то вроде Freemarker, но я думаю, что это слишком сложно для моих пользователей и потребовало бы, чтобы они знали мою DataModel (eww).

Спасибо за чтение!

D.

Ответы [ 2 ]

2 голосов
/ 28 октября 2008

Посмотрите на 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} могут появляться в другом порядке в некоторых языки.

UPDATE: Я просто правильно прочитал ваш оригинальный пост и заметил комментарий о PDF. Это говорит о том, что текст шаблона будет значительно больше, чем строка или две.

В таких случаях вы можете захотеть изучить что-то вроде StringTemplate , которое кажется более подходящим для этой цели - этот комментарий основан исключительно на первоначальных исследованиях, поскольку я не использовал его в гневе.

0 голосов
/ 28 октября 2008

Раньше я использовал подобную систему замены токенов. Мне лично нравится что-то вроде.

[MyValue]

Поскольку пользователю легко набирать текст, а затем я просто использую замены для замены токенов на реальные данные.

...