Beetl 사용자 정의 태그 (1) 바인딩 변수 값
2276 단어 바인딩 변수 지정Beetl 사용자 정의 태그
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"]}
<% } %>