Beetl 自定义标签(一) 绑定变量赋值

原创
2015/04/17 11:40
阅读数 383
 此处 dao 处理 以JFinal 为例 
import java.util.List;
import net.zhuawa.ext.btl.tag.pojo.ParamSql;
import net.zhuawa.ext.btl.tag.util.ParamSqlUtil;
import org.beetl.core.BodyContent;
import org.beetl.core.GeneralVarTagBinding;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

public class Out_SqlQueryListTag extends GeneralVarTagBinding {
	
	private String sql;
	private String attribute;
	private Integer pagesize;
	
	public void init(){
		String _sql = getAttributeValue("sql") != null ? getAttributeValue("sql").toString() :null;
		Integer _pagesize = getAttributeValue("pagesize") != null ? Integer.parseInt(getAttributeValue("pagesize").toString()) :0;
		setSql(_sql);
		setPagesize(_pagesize);
	}
	
	@Override
	public void render() {
		init();
		BodyContent bodyContent = getBodyContent();
		ParamSql paramSql = ParamSqlUtil.parseXml(bodyContent.getBody(),"param");
		String paramSqls = "";
		Object[] paramVaues = new Object[]{};
		if(null != paramSql){
			paramSqls = paramSql.getSql();
			paramVaues = paramSql.getObjects().length > 0 ? paramSql.getObjects() : paramVaues;
		}
		List<Record> queryList = Db.find(new StringBuilder(sql).toString().replace(":paramSql",paramSqls),paramVaues);
		this.binds(queryList);
		this.doBodyRender();
	}
	
	public String getSql() {
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}
	public Integer getPagesize() {
		return pagesize;
	}
	public void setPagesize(Integer pagesize) {
		this.pagesize = pagesize;
	}
}

 注册标签 此处以JFinal为例 

GroupTemplate groupTemplate = JFinalRenderFactory.groupTemplate;
groupTemplate.registerTag("O_SqlQueryList",Out_SqlQueryListTag.class);

 模板调用  可在标签体外调用 

<#O_SqlQueryList sql="select * from [your_table] where 1= 1 :paramSql  order by  id " pagesize="15"; list>
  <ParamSql>
    <param sql = " and col_a = "a"  />
    <param sql = " and col_b = "b"  />
  </ParamSql>
  <%var _list = list;%>
</#O_SqlQueryList>
<% for(entity in _list ){ %>
  ${entity["col_a"]}
<% } %>






展开阅读全文
加载中
点击加入讨论🔥(5) 发布并加入讨论🔥
5 评论
0 收藏
0
分享
返回顶部
顶部