Какие-нибудь легкие шаблонные решения в Java с поддержкой условного форматирования? - PullRequest
5 голосов
/ 07 ноября 2008

Я использую MessageFormat для форматирования некоторых адресов с помощью шаблона, подобного следующему:

"{0}\n{1}\n{2}\n{3}, {4} {5}"

, где

  • 0 = улица 1
  • 1 = улица 2
  • 2 = улица 3
  • 3 = город
  • 4 = состояние
  • 5 = почтовый индекс

Большинство из этих полей являются необязательными при захвате. Как мне избежать пустой строки, когда, например, нет улицы 3? Я мог бы использовать такой шаблон как "{0} {1} {2} {3} {4} {5}" и затем заменить либо "street 3 \ n" или "" соответственно, но тогда шаблон не обеспечивает большая польза от форматирования.

Есть ли способ включить условные выражения в строку формата? Или есть другой, желательно легкий, шаблонизатор, который поддерживает условное форматирование?

Ответы [ 8 ]

7 голосов
/ 20 ноября 2008

РЕДАКТИРОВАТЬ: переписать ...

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

С другой стороны, если вы действительно заботитесь о дизайне , например, при использовании шаблона проектирования Model-View-Controller (MVC), то ваш выбор быстро уменьшается.

Большинство ответов здесь подчеркивают мощь различных шаблонизаторов. Но вся суть MVC в том, что вы не хотите делать больше, потому что если вы будете делать больше в своих шаблонах, вы в конечном итоге очень сильно повредите. Бизнес-логика не принадлежит представлению, она принадлежит модели. Логика управления принадлежит контроллеру. Существует только один шаблонизатор, который фактически применяет шаблон MVC. Если вы не желаете использовать шаблон MVC (возможно, вы выходите за его пределы), этот один механизм все еще помогает вам не причинять себе вреда и побуждает вас правильно разделить функциональность.

На самом деле есть только один хороший шаблонизатор: StringTemplate . См. http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf, чтобы узнать, почему.

Я использовал его на нескольких платформах (Python, Java, .Net), а также на многих альтернативах и правилах StringTemplate.

Решение принято. Наслаждаться. С наилучшими пожеланиями.

5 голосов
/ 16 декабря 2008

Другие упоминали строковый шаблон, но мы недавно переключились на MVEL (который также делает больше, но на самом деле не добавляет веса): http://mvel.codehaus.org/ (и я считаю, что его проще использовать).

3 голосов
/ 06 июня 2014

ИМХО Chunk Templating engine самый лучший. Файл JAR имеет только 180 КБ ! и поддержка IF и итерация . Как это круто!

2 голосов
/ 07 ноября 2008

jguru StringTemplates

Это было использовано для создания сайта jGuru - он существует уже некоторое время.

2 голосов
/ 07 ноября 2008

Не знаю, насколько легким вы бы это считали, но Apache Velocity - один из самых известных шаблонизаторов для Java.

1 голос
/ 07 ноября 2008

Вы можете просто выполнить форматирование так, как вы это делаете, а затем удалить пустые строки, заменив серию из более чем одного '\n' с одним '\n', например,

result = result.replaceAll("\n+", "\n");
0 голосов
/ 08 января 2009

Freemarker довольно хорош. Он легкий, быстрый, имеет условное форматирование и массу других функций.

0 голосов
/ 07 ноября 2008

Использовать скорость или Freemarker .

...