package com.norteksoft.tags.grid; import java.util.HashMap; import java.util.List; 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.StringUtils; import com.norteksoft.mms.form.entity.ListColumn; import com.norteksoft.mms.form.entity.ListView; import com.norteksoft.mms.form.enumeration.OrderType; 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.freemarker.TagUtil; public class SubGridTag extends TagSupport { private static final long serialVersionUID = 1L; private String gridId;//子表的ID private String code;//对应的子表编号 private String url;//子表URL private String pageName;//数据名称 //标签开始时调用的出来方法 @Override public int doStartTag() throws JspException { try { String html =readTemplate(); //将信息内容输出到JSP页面 pageContext.getOut().print(html); } catch (Exception e) { throw new JspException(e); } return Tag.EVAL_PAGE; //跳过标签体的执行 // return SKIP_BODY; } private String readTemplate() throws Exception { String webapp=((HttpServletRequest)pageContext.getRequest()).getContextPath(); ListViewManager listViewManager = (ListViewManager) ContextUtils.getBean("listViewManager"); ListView listView=listViewManager.getListViewByCode(code); List<ListColumn> columns=listView.getColumns(); Map<String, Object> root=new HashMap<String, Object>(); FormHtmlParser formHtmlParser = (FormHtmlParser) ContextUtils.getBean("formHtmlParser"); root.put("gridId", gridId); if(url.contains("?")){ root.put("url", url.substring(0,url.indexOf("?"))); root.put("urlParameter", url.substring(url.indexOf("?")+1,url.length())); }else{ root.put("url", url); } root.put("ctx", webapp); root.put("_list_code", code); Boolean total=false;//是否合计 if(columns!=null&&columns.size()>0){ for(ListColumn lc:columns){ lc.setInternationName(formHtmlParser.getInternation(lc.getHeaderName())); String vs=formHtmlParser.getValueSet(lc,null,null); lc.setOptionSet(vs); if(lc.getTotal()){ total=true; } } root.put("columns", columns); } if(pageName!=null){ root.put("pageName", pageName); } if(listView.getRowNumbers()){ root.put("rowNumbers", true); }else{ root.put("rowNumbers", false); } if(StringUtils.isNotEmpty(listView.getEditUrl())){ root.put("editurl", listView.getEditUrl()); } if(listView.getRowNum()!=null){ root.put("rowNum", listView.getRowNum().toString()); } if(listView.getRowList()!=null){ root.put("rowList", listView.getRowList()); } if(listView.getMultiSelect()!=null&&listView.getMultiSelect()){ root.put("multiselect", "true"); }else { root.put("multiselect", "false"); } if(listView.getMultiboxSelectOnly()!=null&&listView.getMultiboxSelectOnly()){ root.put("multiboxSelectOnly", "true"); }else{ root.put("multiboxSelectOnly", "false"); } if(StringUtils.isNotEmpty(listView.getDefaultSortField())){ root.put("sortname", listView.getDefaultSortField()); }else{ root.put("sortname", ""); } if(OrderType.DESC.equals(listView.getOrderType())){ root.put("sortorder", "desc"); }else{ root.put("sortorder", "asc"); } if(listView.getPagination()){ root.put("pagination", "true"); } root.put("renmibi", "¥"); root.put("_year", "年"); root.put("_month", "月"); root.put("_day", "日"); root.put("_hour", "时"); root.put("_minute", "分"); root.put("_second", "秒"); root.put("total", total); String result = TagUtil.getContent(root, "grid/subGridTag.ftl"); return result; } public String getGridId() { return gridId; } public void setGridId(String gridId) { this.gridId = gridId; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getPageName() { return pageName; } public void setPageName(String pageName) { this.pageName = pageName; } }