我正在寻找下面描述的功能。sun api的MessageFormat不适合我的需要&可能Spring El表达式也是如此。
假设我们有一个名为person的对象:
Person person = new Person();
person.setName("fredop");
person.setAge("25");
String messageFormat="My name is {Person.name}, i'm {Person.age} years old""
System.out.println(Translate(person,messageFormat);在translate方法中,我将只传递一个对象。
最后一行将打印:
"My name is fred, i'm 25 years old"有没有一个真正的api可以做到这一点呢?
发布于 2010-06-25 00:15:36
JavaGroovyPythonGroovyJava语言是一种语言扩展,它允许您轻松地将变量嵌入到字符串中:
String s = "Hello I'm a ${groovyname} string in which i can insert ${object.variable}"发布于 2010-06-25 00:57:57
你可以使用Spring Expression Langauge来实现这一点。下面是示例代码:
import org.springframework.expression.common.TemplateParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.ExpressionParser;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Main {
public static void main(String[] args) {
Person p = new Person("abhinav", 24);
String expression = "my name is #{name} and my age is #{age}";
System.out.println(SpelFormatter.format(expression, p));
}
}
class SpelFormatter {
private static final ExpressionParser PARSER = new SpelExpressionParser();
private static final TemplateParserContext TEMPLATE_PARSER_CONTEXT =
new TemplateParserContext();
public static String format(String expression, Object context) {
return PARSER.parseExpression(expression,
TEMPLATE_PARSER_CONTEXT).getValue(context, String.class);
}
}发布于 2010-06-25 00:11:41
Velocity是一个基于Java的模板引擎。它允许任何人使用简单而强大的模板语言来引用Java代码中定义的对象。
检查User guide中的语法等。
https://stackoverflow.com/questions/3111586
复制相似问题