Обработка шаблонов с использованием Java - PullRequest
0 голосов
/ 23 сентября 2010

У нас есть шаблон электронной почты, который должен быть обработан с использованием Java.Мы должны заменить переменные в шаблоне фактическими значениями.Мы смогли достичь этого, используя сопоставление с образцом, т.е.путем поиска в шаблоне определенных шаблонов и замены их фактическими значениями.Теперь нам нужно иметь условия в XML-файле. Например,

$if($subject!=null)
 sample subject
$endif

Нам нужно также проверить это условие.subject - это переменная, значение которой необходимо перераспределить.Нам не разрешено использовать шаблонный процессор Velocity.

Пожалуйста, предложите лучшие способы реализации этого. Хорошо иметь способы синтаксического анализа, такие как применение значений для переменных в первом разборе и проверка логикиво втором разборе.Будет очень полезно, если кто-нибудь сможет высказать свои ценные предложения.

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Я никогда не использовал это лично, но StringTempate (http://www.stringtemplate.org/) - справедливая замена Velocity. Некоторые фактически говорят, что это лучше.

0 голосов
/ 23 сентября 2010

Если вы не можете использовать Velocity, вас могут заинтересовать другие процессоры шаблонов .Я успешно использовал FreeMarker в нескольких проектах.

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

После этого, если вы действительно хотите сделать это сложным способом, вы можете создать свой собственный шаблонный процессор с использованием лексеров и анализаторов, таких как JFlex и CUP .При этом в вашем примере вы используете нотацию $ для ключевых слов ($if, $endif) и переменных ($subject).Хотя в принципе в этом нет ничего плохого, вероятно, было бы проще придумать разные обозначения для двух типов, чтобы упростить лексер (меньше исключений / зарезервированных слов).Помогли бы лучшие разделители, чтобы отличить фактическое содержимое от шаблонных инструкций.

...