StringTemplate template = null;
// setAttrubte로 값을 넣습니다.
template = new StringTemplate("안녕하세요. 저는 $name$입니다.");
template.setAttribute("name", "lee,jaeil");
System.out.println(template.toString());
StringTemplateGroup group = new StringTemplateGroup("mygroup", "특정폴더");
template = group.getInstanceOf("basic");
System.out.println(template.toString());
static class User {
private String name;
private int age;
private String job;
public User(String name, int age, String job) {
super();
this.name = name;
this.age = age;
this.job = job;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getJob() {
return job;
}
public String toString() {
return String.format("{name : %s, age : %s, job :%s}", name, age, job);
}
}
User me = new User("lee,jaeil", 19, "student");
template = new StringTemplate("안녕하세요. 저는 $user.name$이고 $user.age$살이고 $user.job$입니다.");
template.setAttribute("user", me);
System.out.println(template.toString());
template = new StringTemplate("$user$");
template.setAttribute("user", users);
System.out.println(template.toString());
// map도 지원합니다.
HashMap hm = new HashMap();
hm.put("name", "lee,jaeil");
hm.put("age", 19);
hm.put("job", "student");
template = new StringTemplate("안녕하세요. 저는 $user.name$이고 $user.age$살이고 $user.job$입니다.");
template.setAttribute("user", hm);
System.out.println(template.toString());
// Multi Values일 경우 이여 붙히지만, 구분자를 둘수 있습니다.
// Collection도 됩니다.
User[] users = new User[] {
new User("lee, jaeil", 19, "student")
, new User("seo,hyunju", 18, "student")
};
template = new StringTemplate("안녕하세요. $users; separator=\", \"$ 입니다.");
template.setAttribute("users", users);
System.out.println(template.toString());
// Group을 정하고 다른 Template을 include 합니다.
// Group을 정해야 다른 템플릿을 사용가능합니다.
StringTemplateGroup group = new StringTemplateGroup("mygroup", "/Users/jilee/Documents/workspace-sts-2.2.1.RELEASE/StringTemplateSample/sample");
template = group.getInstanceOf("basic");
System.out.println(template.toString());
안녕하세요. $bold(it="test")$ 입니다.
bold.st
<b>$it$</b>
// 템플릿 파일을 property에 : 로 접근하여 사용할수 있습니다.
template = new StringTemplate(group, "안녕하세요. 저는 $user.name:bold()$이고 $user.age$살이고 $user.job:bold()$입니다.");
template.setAttribute("user", me);
System.out.println(template.toString());
// 반복된값을 출력합니다.
// :{}를 사용합니다. :{ 와 | 사이의 이름으로 각각의 객체를 받습니다.
template = new StringTemplate("$users:{u | <ul><li>$u.name$, $u.age$, $u.job$</li></ul>}; separator=\"\n\"$");
template.setAttribute("users", users);
System.out.println(template.toString());
// 조건문을 사용
template = new StringTemplate("$if(users)$ $users:{u | <ul><li>$u$</li></ul>}; separator=\"\n\"$ $endif$");
//template.setAttribute("users", users);
System.out.println(template.toString());
//$를 쓰고 싶다면 \를 사용
template = new StringTemplate("\\$ $\\n$ $\\t$ $\\r$");
System.out.println(template.toString());
//주석도 사용할수 있음
template = new StringTemplate("$! this is a comment !$ ");
System.out.println(template.toString());
static class StringRender implements AttributeRenderer {
@Override
public String toString(Object o) {
return o.toString();
}
@Override
public String toString(Object o, String formatName) {
if("escape".equals(formatName)) {
String s = o.toString();
return s.replaceAll("<", "<").replaceAll(">", ">");
}
return toString(o);
}
}
static class DateRender implements AttributeRenderer {
@Override
public String toString(Object o) {
return o.toString();
}
@Override
public String toString(Object o, String formatName) {
if("simple".equals(formatName)) {
return new SimpleDateFormat("yyyy-MM-dd").format(o);
}
return toString(o);
}
}
// AttributeRenderer를 이용하여 포맷을 결정한다.
template = new StringTemplate("Today date is $currentTime; format=\"simple\"$ $html; format=\"escape\"$");
template.registerRenderer(String.class, new StringRender());
template.registerRenderer(Date.class, new DateRender());
template.setAttribute("currentTime", new Date());
template.setAttribute("html", "<a href=\"\">test</a>");
System.out.println(template.toString());

BasicUsage.java
Prev




Rss Feed