软件是对质量的不懈追求

StringTemplate语法

1 变量替换
public static void fun1() {
  StringTemplate st = new StringTemplate(
    "对象变量替换 姓名:$KeyList.Name$, 年龄:$KeyList.Age$ ");
  HashMap ht = new HashMap();
  ht.put("Name", "李四");
  ht.put("Age", "35");
  st.setAttribute("KeyList", ht);
  System.out.print(st.toString());
 }
2 自定义集合替换
public static void fun2() {
  StringTemplate st = new StringTemplate(
    "自定义集合替换 $List:{姓名:$it.Name$ 年龄:$it.Age$}$");
  st.setAttribute("List.{Name,Age}", "王二", "29");
  System.out.print(st.toString());

 }
3 对象变量替换
定义类
private static class User {
  String name;
  String age;

  public String getName() {
   return name;
  }

  public void setName(String name) {
   this.name = name;
  }

  public String getAge() {
   return age;
  }

  public void setAge(String age) {
   this.age = age;
  }
 }
public static void fun3() {
  User us = new User();
  us.name = "张三";
  us.age = "23";
  List<User> uss = new ArrayList<User>();
  uss.add(us);
  uss.add(us);
  uss.add(us);
  uss.add(us);
  uss.add(us);
  StringTemplate st = new StringTemplate(
    "<table>$Item:{<tr class=black><td>$it.name$</td></tr>},{<tr class=red><td>$it.age$</td></tr>};separator=\"\n\"$</table>");
  st.setAttribute("Item", uss);
  System.out.print(st.toString());
 }
   交叉替换
 public static void fun4() {
  User us = new User();
  us.name = "张三";
  us.age = "23";
  List<User> uss = new ArrayList<User>();
  uss.add(us);
  uss.add(us);
  uss.add(us);
  uss.add(us);
  uss.add(us);

  StringTemplateGroup sg = new StringTemplateGroup("GroupTest");
  sg.defineTemplate("RowRed",
    "<tr class=red><td>$it.Name$</td><td>$it.Age$</td></tr>\n");
  sg.defineTemplate("Rowblack",
    "<tr class=black><td>$it.Name$</td><td>$it.Age$</td></tr>\n");
  StringTemplate st = sg.defineTemplate("List",
    "<table>$Item:RowRed(),Rowblack()$</table>");
  st.setAttribute("Item", uss);
  System.out.print(st.toString());
 }
4 条件判断
public static void fun5() {
  StringTemplate st = new StringTemplate(
    "当前用户登陆状态: $if(IsAdmin)$ 用户登陆成功! $else$ 用户没有登陆! $endif$");
  st.setAttribute("IsAdmin", true);
  System.out.print(st.toString());
 }
5 sql语句实现
  theQuery.st内容
  SELECT $column; separator=","$ FROM $table$;
  public static void fun6() {
  // 一个sql语句的实现
  StringTemplateGroup group = new StringTemplateGroup("myGroup", "c:/");
  StringTemplate query = group.getInstanceOf("theQuery");
  query.setAttribute("column", "name");
  query.setAttribute("column", "email");
  query.setAttribute("table", "User");
  System.out.print(query.toString());
 }
6 使用AttributeRenderer
  private static class DateRenderer implements AttributeRenderer {
  public String toString(Object o) {
   SimpleDateFormat f = new SimpleDateFormat("yyyy.MM.dd");
   return f.format(((Calendar) o).getTime());
  }
 }
public static void fun7() {
  StringTemplate st = new StringTemplate("date: <created>",
    AngleBracketTemplateLexer.class);
  st.setAttribute("created", new GregorianCalendar(2005, 07 - 1, 05));
  st.registerRenderer(GregorianCalendar.class, new DateRenderer());

  String result = st.toString();

  System.out.print(result.toString());
 }

posted on 2009-11-14 13:40 BlakeSu 阅读(1223) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: