首页 > 编程知识 正文

印象笔记标签分类模板,探灵笔记自定义房间

时间:2023-05-06 17:18:04 阅读:52003 作者:537

http://www.iBeetl.com,beetl支持自定义标签;

使用自定义标签需要三个步骤。

1 )继承Tag类(或GeneralVarTagBinding类)实现render方法;

2 )注册标签:

beetlviewfactory.group template.register tag (' page ',PageTag.class );

3 )使用标签:

.

#page

Tag类的源代码:

引用

公共基础类标签

{

保护性对象[ ] args=null;

保护性组模板gt;

保护性上下文CTX;

保护性字节写入器bw;

保护语句Bs;

保护性void dobodyrender (

{

bs.execute(CTX );

}

protectedbodycontentgetbodycontent (

{

bytewriterwriter=CTX.byte writer;

bytewritertempwriter=CTX.byte writer.gettempwriter (;

ctx.byteWriter=tempWriter;

doBodyRender (;

ctx.byteWriter=writer;

return tempWriter.getTempConent (;

}

公共基础语音渲染器(;

公共void init (上下文CTX,对象[ ] args,语句ST ) )。

{

this.ctx=ctx;

this.bw=ctx.byteWriter;

this.gt=ctx.gt;

this.args=args;

this.bs=st;

}

}

其中args参数的开头是标签名称。 也就是说,自定义标签名称的第二个是Map,它保存自定义标签的属性名称,如下所示:

分页符标签,args={'tage ',Map[val=page]}

ctx是模板上下文,全局变量:ctx.getGloabl ('名称');

Beetl具有更易于使用的抽象类GeneralVarTagBinding。 这提供了getAttributeValue根据属性名称获取标签属性值的功能

通用可变绑定源代码:

引用

package org.beetl.core;

import java.util.Map;

//*

*这些子类可以用作html标记,除了可以实现bindVars初始化绑定的变量外,还允许在render方法中调用

*方法bing(name,value )绑定变量。 以下是一个例子

*

* publicclasstestgeneralvartagbindingextendsgeneralvartagbinding

{

公共语音渲染器(

{

for(intI=0; i 5; I )

{

this.bind('value ',I );

this.doBodyRender (;

}

}

}

在此示例中,标签体在循环中渲染五次,然后在每个循环中设置值。 模板的内容如下

$ {值}

#tag

*/

publicabstractclassgeneralvartagbindingextendstagimplementstagvarbinding

{

私有映射名称2索引=null;

@Override

公共对象[ ] bind vars (

{

//todo自动- generated method stub

返回空值;

}

公共语音映射名称2索引(映射映射)。

{

name 2索引=映射;

}

公共语音滨

d(String name, Object value)

{

if (name2Index == null)

{

throw new RuntimeException();

}

Integer index = name2Index.get(name);

if (index == null)

{

throw new RuntimeException();

}

ctx.vars[index] = value;

}

public Object getAttributeValue(String attrName)

{

Map map = (Map) this.args[1];

return map.get(attrName);

}

public String getHtmlTagName()

{

return (String) this.args[0];

}

}

下面是我写的分页标签的实现:

引用

public class PageTag extends GeneralVarTagBinding {

private  long total = 0;

private  int perSize = 0;

private int curNo = 0;

private int pageNum = 0;

private static final String SPAN = "span";

private static final String A = "a";

private void init(){

Page page = (Page)getAttributeValue("val");

total = page.getTotalNum();

perSize = page.getPerSize();

curNo = page.getCurNo();

pageNum = (int)(total / perSize);

if(pageNum * perSize < total){

pageNum++;

}

}

@Override

public void render(){

init();

StringBuilder paging = new StringBuilder("");

paging.append("

");

if(curNo > 1){

paging.append(" ")

.append(" ");

if(curNo > 4){

paging.append("...");

}

if(curNo - 2 > 0){

paging.append("").append(curNo - 2).append("");

}

if(curNo - 1 > 0){

paging.append("").append(curNo - 1).append("");

}

}else if(curNo == 1){

paging.append(" ")

.append(" ");

}

paging.append("").append(curNo).append("");

if(curNo + 1 <= pageNum){

paging.append("").append(curNo + 1).append("");

}

if(curNo + 2 <= pageNum){

paging.append("").append(curNo + 2).append("");

}

if(pageNum - curNo > 2){

paging.append("...");

}

if(curNo >= pageNum){

paging.append(" ")

.append(" ");

} else{

paging.append(" ")

.append(" ");

}

paging.append("")

.append("共").append(pageNum).append("页").append(total).append("条记录 到第")

.append("页 ")

.append("

");

try{

ctx.byteWriter.writeString(paging.toString());

this.doBodyRender();

ctx.byteWriter.writeString(paging.toString());

}catch (IOException e){

throw new RuntimeException(e);

}

}

}

doBodyRender()方法是输出标签内的HTML

最终效果

更详细的使用文档可以去Beetl在线文档上看http://ibeetl.com/guide/#_%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E7%AD%BE

大小: 17.8 KB

分享到:

2014-08-05 10:51

浏览 4003

评论

1 楼

javamonkey

2014-08-05

写的挺好的,支持一个,

可以继承Tag,扩展接口友好的标签,比如如何获取属性,如何获取全局变量等

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。