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

 此处 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"]}
<% } %>






转载于:https://my.oschina.net/longtutengfei/blog/402852

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值