2008-10-28 3 views
1

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

Я имел в виду иметь заранее определенный набор переменных, такие как:
@[email protected]
@[email protected]

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

«Это какой-то текст на бронирование @[email protected] который нужен мне»

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

«Это какой-то текст для бронирования 10001, который необходим мне»

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

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

D.

ответ

0

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

[MyValue]

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

+0

Слишком сложный. Это звучит как изобретать колесо, когда у вас уже есть MessageFormat, который его обрабатывает. – 2008-10-28 15:44:08

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, которое кажется более подходящим для этой цели - этот комментарий основан исключительно на первоначальных расследованиях, поскольку я не использовал его в гневе.

 Смежные вопросы

  • Нет связанных вопросов^_^