package com.norteksoft.tags.grid; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.lang.xwork.StringUtils; import com.norteksoft.mms.form.entity.ListView; import com.norteksoft.mms.form.service.FormHtmlParser; import com.norteksoft.mms.form.service.ListViewManager; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.SystemUrls; import com.norteksoft.product.util.freemarker.TagUtil; public class CustomGridTag extends TagSupport { private static final long serialVersionUID = 1L; private String gridId;//表格的ID private String tableName;//数据表表名 private String listCode;//对应的列表编号 private String headListCode;//表头的列表编号 //标签开始时调用的出来方法 @Override public int doStartTag() throws JspException { try { if(StringUtils.isEmpty(headListCode)){ headListCode="MMS_LIST_COLUMN"; } String html =readTemplate(); //将信息内容输出到JSP页面 pageContext.getOut().print(html); } catch (Exception e) { throw new JspException(e); } return Tag.EVAL_PAGE; //跳过标签体的执行 // return SKIP_BODY; } @SuppressWarnings("unchecked") private String readTemplate() throws Exception { String webapp=((HttpServletRequest)pageContext.getRequest()).getContextPath(); ListViewManager listViewManager = (ListViewManager) ContextUtils.getBean("listViewManager"); FormHtmlParser formHtmlParser = (FormHtmlParser) ContextUtils.getBean("formHtmlParser"); ListView listView=listViewManager.getListViewByCode(headListCode);//列表头设置 ListView listVeiwEntity=listViewManager.getListViewByCode(listCode);//列表对应的实体 String[] colResult=formHtmlParser.getColNames(listView.getColumns(),listView,listVeiwEntity,tableName,null); String imatrix=SystemUrls.getSystemUrl("imatrix"); String data=null; if(listVeiwEntity!=null){ data=formHtmlParser.getJsonData(listVeiwEntity.getColumns(),listView.getColumns()); }else{ data=formHtmlParser.getJsonData(new ArrayList(),listView.getColumns()); } Map<String, Object> root=new HashMap<String, Object>(); root.put("tableId", gridId); root.put("ctx", webapp); root.put("listView", listView); root.put("colNames", colResult[0]); root.put("colModel", colResult[1]); root.put("jsonData", data); root.put("webCtx", imatrix); root.put("isSubSystem", "true");//是否是子系统 root.put("loginName", ContextUtils.getLoginName()); root.put("userName", ContextUtils.getUserName()); String result = TagUtil.getContent(root, "grid/customGridTag.ftl"); return result; } //标签结束时调用的处理方法 public int doEndTag(){ //继续执行后续的JSP页面的内容 return Tag.EVAL_PAGE; } public String getGridId() { return gridId; } public void setGridId(String gridId) { this.gridId = gridId; } public String getTableName() { return tableName; } public void setTableName(String tableName) { this.tableName = tableName; } public String getListCode() { return listCode; } public void setListCode(String listCode) { this.listCode = listCode; } public String getHeadListCode() { return headListCode; } public void setHeadListCode(String headListCode) { this.headListCode = headListCode; } }