我正在寻找下面描述的以下功能。 sun api的MessageFormat不适合我的需要&也许是Spring El的表达。
假设我们有一个名为Object的人物:
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);
在翻译方法中,我只传递一个对象。
最后一行将打印出来:
"My name is fred, i'm 25 years old"
任何关于实际api的想法吗?
答案 0 :(得分:2)
Groovy ,这是一种类似ruby / python语言的Java语言扩展,允许您轻松地将变量嵌入到字符串中:
String s = "Hello I'm a ${groovyname} string in which i can insert ${object.variable}"
答案 1 :(得分:2)
您可以使用Spring Expression Language执行此操作。以下是带有示例的代码:
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);
}
}
答案 2 :(得分:0)
Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象。
检查User guide的语法等。