Beetl学习 —— 绑定变量的HTML标签

#### 2.24. 绑定变量的HTML标签

实现功能:Beetl支持将标签实现类(java代码)里的对象作为临时变量,被标签体引用。

如何实现:

                第一步:自定义标签类继承GeneralVarTagBinding 。自己定义“方法体”中的逻辑,并通过获得标签里的参数作为输入,得到结果。

Ps:得到“标签里的参数值”的方法this.getAttributeValue()。

               第二步:需要进行输出变量绑定。即按需求实现GeneralVarTagBinding (此类是Tag的子类) 类提供的3个方法 。

- void binds(Object… array) 子类在render方法里调用此类以实现变量绑定,绑定顺序同在模板中声明的顺序

- void bind(String name, Object value) 子类在render方法里调用此类以实现变量绑定,name是模板中声明的变量名,用此方法绑定不如binds更灵活,不再推荐

- Object getAttributeValue 获得标签的属性 - Map getAttributes 获得标签的所有属性

                 第三步:将标签和实现类绑定。即gt.registerTag("tag", TagSample.class);

                 第四步:渲染页面

1、```java

public class TagSample extends GeneralVarTagBinding{

    @Override
    public void render() {
        // TODO Auto-generated method stub
        String name = (String)this.getAttributeValue("name");
        String feel = (String)this.getAttributeValue("feel");
            if(name.equals("lzs") && feel.equals("happy")){
                    this.binds("study happy!",1,2,3);    // 2、
                    this.doBodyRender();
            }
    }

}
3、

public class AppTag 
{
    public static void main( String[] args ) throws Exception
    {
        GroupTemplate gt = Util.getGroupTemplate();
        Template  template = gt.getTemplate("/tag.txt");
        //template.binding("input", 3);
        gt.registerTag("tag", TagSample.class);
        String str = template.render();
        System.out.println(str);
    }
}

4、

<#tag name="lzs" feel="happy";value,value1,value2,value3>
    ${value}${value1}${value2}${value3}
</#tag>

类似于常规html标签,需要在标签的最后的属性定义后面加上分号 ";" 此分号表示这个是一个需要在标签运行时需要绑定变量的标签。后跟上要绑定的变量列表,绑定多个变量,需用逗号分开,如var1,var2 上。如果后面没有变量列表,只有分号,则默认绑定到标签名同名的变量上. 如果标签有namesapce,则默认绑定订的变量名不包含namespace

注意,由于标签使用因为太长可能换行或者是文本格式化导致换行,目前beetl只允许在属性之间换行,否则,将报标签解析错误。

Ps:默认情况下,如果标签属性出现了var(可以通过配置文件改成其他属性名),也认为是绑定变量的标签,如上面的例子也可以这么写

var属性的值可以是个以逗号分开的变量名列表,如var="total,customer,index"

转载于:https://my.oschina.net/u/3530220/blog/1543611

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值