Язык выражений Java: интерполяция? - PullRequest
2 голосов
/ 20 января 2010

Greetings,

В разрабатываемом веб-приложении я хочу сделать что-то вроде следующего:

У меня есть Bean-компонент типа

class Gene{
String geneid;
String sequence;
..
}

// EL expression (sometimes should be simple as "${geneid}" without URL pattern)
String exp="<a> href='http://www.ncbi.nlm.nih.gov/pubmed?term=${geneid}' />";
String outputString=someframeworkobject.somemethod(exp,aGeneInstance);

Таким образом, строка outputStringинтерполируется как: http://www.ncbi.nlm.nih.gov/pubmed?term=gene19191X

Есть ли какие-либо легковесные платформы EL, которые я могу использовать для этого?

Ответы [ 2 ]

3 голосов
/ 20 января 2010

Может быть MVEL будет работать для вас.

С шаблоном типа

 Hello, @{person.getSex() == 'F' ? 'Ms.' : 'Mr.'} @{person.name}

вы можете сделать

 context.put("person", personBean);
 String output = (String) TemplateRuntime.eval(template, context);

Ознакомьтесь с этим учебным пособием (где я читал об этом, у меня нет опыта работы с MVEL).

2 голосов
/ 20 января 2010

Похоже, все, что вам нужно, это базовый класс библиотеки Java MessageFormat .Он довольно прост в использовании и позволяет выполнять замену шаблонов в строке.

String outputString = MessageFormat.format("<a> href='http://www.ncbi.nlm.nih.gov/pubmed?term={0}' />", "gene19191X");

Вы также можете создать экземпляр MessageFormat и использовать его повторно с другими значениями.

Другие параметрыВы также можете попробовать:

  • Apache Commons EL - Это построено для выражений в веб-приложениях.
  • Groovy GStrings - Iиспользуйте это иногда, чтобы оценить «сценарий».Это имеет преимущество, позволяя использовать более сложную логику.
...