首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

GT-Grid 自定义标签兑现jsp页面的配置信息

2012-11-23 
GT-Grid 自定义标签实现jsp页面的配置信息GT-Grid 这个列表组件我就不介绍了,相信朋友们都知道!在最近的两

GT-Grid 自定义标签实现jsp页面的配置信息
GT-Grid 这个列表组件我就不介绍了,相信朋友们都知道!在最近的两个项目里,后台都用到了GT-Grid,唯一觉得麻烦的就是jsp页面中要写很多js的配置,因此对其进行了封装,优化最后和大家分享我这个团队的结果!
封装的思路: 使用标签  标签在解析时在页面中打印响应的配置js
以下是标签代码:
GtColumnTag.java

package com.jframe.tag;/** * Title:自定列表列标签 * Description:  * Copyright: Copyright (c) 2009-2011 * @author:jframe lixiaojie wangjun * @version 1.0 */import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.BodyContent;import javax.servlet.jsp.tagext.BodyTagSupport;import javax.servlet.jsp.tagext.DynamicAttributes;import javax.servlet.jsp.tagext.Tag;public class GtColumnTag extends BodyTagSupport implements DynamicAttributes {private static final long serialVersionUID = 2852493162447418830L;private String name;   //数据集唯一标示  必填1private String type;   //数据类型 date int float string  默认是stringprivate String index;  //字段对应的"record的属性名". 根据index,GT-Grid就可以知道这一列 对应的时record哪个属性的值.private String initValue;  //调用gt函数产生新的数据集  值例如:function(record){return record['english'] + record['math'];}}  private String id;     //每个列表组件都有一个id 该id在页面内唯一private String header; //列显示名称  必填2private String fieldName; //对应数据库字段 private String minWidth;  //列最小宽度private String width;  //宽private String align;     //对其方式private String sortable;  //是否排序 ,只能设置一个列 ,true/falseprivate String sortOrder; //排序规则asc desc private String hidden;    //列是否被隐藏private String printable; //列是否能打印private String renderer;   //调用gt的方法返回值 方法: function(value ,record,columnObj,grid,colNo,rowNo){return '<a href=".?no='+record['no']+'" >'+ record['name'] +' 的详细信息</a>';}}       //例2:  GT.Grid.mappingRenderer(  {'U': '未知' , 'M':'男', 'F':'女'} , '未知' )private String isCheckColumn;//是否是checkbox显示 必须设置GTTable属性selectRowByCheck : true, checkbox 名字是: gt_grid1_chk_no   规律 gt不变  grid1  是列表id  chk不变  no 是列名 private String isCheckbox;   //自定义checkboxprivate String dateFormat;   //日期格式化private String editType;private String options;private String validRule;private String validatorFunction;private String[] mappingArray;@Overridepublic int doStartTag() throws JspException {if(this.index==null){this.index=this.name;}if(this.id==null){this.id=this.name;}if(this.fieldName!=null){this.name=this.fieldName;}return EVAL_BODY_INCLUDE;}@Overridepublic void doInitBody() throws JspException{// TODO Auto-generated method stubsuper.doInitBody();}@Overridepublic void setBodyContent(BodyContent b) {// TODO Auto-generated method stubsuper.setBodyContent(b);}@Overridepublic int doAfterBody() throws JspException {// TODO Auto-generated method stubreturn super.doAfterBody();}@Overridepublic int doEndTag() throws JspException{try {StringBuffer columnDataStr=new StringBuffer();StringBuffer columnConfigStr=new StringBuffer();GtTag tableTag=(GtTag)this.getParent();columnDataStr.append("{name:").append("'").append(name).append("'");if(type!=null){columnDataStr.append(",type:").append("'").append(type).append("'");}columnDataStr.append(",index:").append("'").append(index).append("'");if(initValue!=null){columnDataStr.append(",initValue:").append(initValue);}if("true".equals(this.isCheckbox)){columnDataStr.append(",initValue:").append("function(record){return '<input name=\\'id-checkbox\\' type=checkbox value=\\''+record['"+index+"']+'\\'>'}  ");this.width="35";sortable="false";}columnDataStr.append("}");columnConfigStr.append("{id:").append("'").append(id).append("'");if("true".equals(this.isCheckbox)){columnConfigStr.append(",header:").append("'").append("<input id=selectAllCheckbox type=checkbox onclick=selectAllCheckbox(this)>").append("'");columnConfigStr.append(",title:").append("'全选'");}else{columnConfigStr.append(",header:").append("'").append(header).append("'");}if(fieldName!=null){columnConfigStr.append(",fieldName:").append("'").append(fieldName).append("'");}if(minWidth!=null){columnConfigStr.append(",minWidth:").append("'").append(minWidth).append("'");}if(width!=null){columnConfigStr.append(",width:").append("'").append(width).append("'");}if(align!=null){columnConfigStr.append(",align:").append("'").append(align).append("'");}if(sortable!=null){columnConfigStr.append(",sortable:").append(sortable);}if(sortOrder!=null){columnConfigStr.append(",sortOrder:").append("'").append(sortOrder).append("'");}if(hidden!=null){columnConfigStr.append(",hidden:").append(hidden);}if(printable!=null){columnConfigStr.append(",printable:").append(printable);}if(dateFormat!=null){renderer=null;columnConfigStr.append(",renderer : function(value ,record,columnObj,grid,colNo,rowNo){return dateformat(value,'").append(dateFormat).append("');}");tableTag.getJsCode().append("Date.prototype.pattern=function(fmt){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours()%12==0?12:this.getHours()%12,"H+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S":this.getMilliseconds()};var week={"0":"\u65e5","1":"\u4e00","2":"\u4e8c","3":"\u4e09","4":"\u56db","5":"\u4e94","6":"\u516d"};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));}if(/(E+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,((RegExp.$1.length>1)?(RegExp.$1.length>2?"\u661f\u671f":"\u5468"):"")+week[this.getDay()+""]);}for(var k in o){if(new RegExp("("+k+")").test(fmt)){fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));}}return fmt;}; ");tableTag.getJsCode().append("function dateformat(value,formatStr){if(value==null||value==''){return'';}var d=new Date();d.setYear(Number(value.substring(0,4)));d.setMonth(Number(value.substring(5,7)-1));d.setDate(Number(value.substring(8,10)));d.setHours(Number(value.substring(11,13)));d.setMinutes(Number(value.substring(14,16)));d.setSeconds(Number(value.substring(17,19)));return d.pattern(formatStr);}");}if(mappingArray!=null&&mappingArray.length>0){renderer=null;columnConfigStr.append(",renderer : GT.Grid.mappingRenderer(  {");StringBuffer str=new StringBuffer();for(int i=0;i<mappingArray.length;i++){str.append("'").append(i).append("':'").append(mappingArray[i]).append("',");}String tempStr=str.toString();columnConfigStr.append(tempStr.substring(0, tempStr.length()-1));columnConfigStr.append("} , '未知' ) ");}if(renderer!=null){columnConfigStr.append(",renderer:").append(renderer);}if(isCheckColumn!=null){columnConfigStr.append(",isCheckColumn:").append(isCheckColumn);}if(this.editType!=null){columnConfigStr.append(",editor:{type:'" ).append(this.editType).append("'");if(this.validRule!=null){columnConfigStr.append(",validRule :'").append(this.validRule).append("'");}if(this.validatorFunction!=null){columnConfigStr.append(",validator : function(value,record,colObj,grid){ return ").append(this.validatorFunction).append("(value,record,colObj,grid);}");}columnConfigStr.append("}");}columnConfigStr.append("}");tableTag.getDataStr().append(columnDataStr).append(",");tableTag.getConfigStr().append(columnConfigStr).append(",");if("true".equals(this.isCheckbox)){tableTag.getJsCode().append("function selectAllCheckbox(arg){var chks=document.getElementsByName('id-checkbox');");tableTag.getJsCode().append("if(arg.checked){for(var i=0;i<chks.length;i++){chks[i].checked=true;}}else{for(var ");tableTag.getJsCode().append("i=0;i<chks.length;i++){chks[i].checked=false;}}}");}this.clear();} catch (Exception e){e.printStackTrace();}return super.doEndTag();}public void setDynamicAttribute(String arg0, String arg1, Object arg2)throws JspException {}@Overridepublic Tag getParent() {return super.getParent();}@Overridepublic void setParent(Tag t){super.setParent(t);}public void clear(){ name =null;    type=null; index=null; initValue=null; id=null; header=null; fieldName=null; minWidth=null; width=null; align=null; sortable=null; sortOrder=null; hidden=null; printable=null; renderer=null; isCheckColumn=null; isCheckbox=null; dateFormat=null; editType=null; options=null; validRule=null; validatorFunction=null; mappingArray=null;}//get 、set 方法public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getIndex() {return index;}public void setIndex(String index) {this.index = index;}public String getInitValue() {return initValue;}public void setInitValue(String initValue) {this.initValue = initValue;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getHeader() {return header;}public void setHeader(String header) {this.header = header;}public String getFieldName() {return fieldName;}public void setFieldName(String fieldName) {this.fieldName = fieldName;}public String getMinWidth() {return minWidth;}public void setMinWidth(String minWidth) {this.minWidth = minWidth;}public String getWidth() {return width;}public void setWidth(String width) {this.width = width;}public String getAlign() {return align;}public void setAlign(String align) {this.align = align;}public String getSortable() {return sortable;}public void setSortable(String sortable) {this.sortable = sortable;}public String getSortOrder() {return sortOrder;}public void setSortOrder(String sortOrder) {this.sortOrder = sortOrder;}public String getHidden() {return hidden;}public void setHidden(String hidden) {this.hidden = hidden;}public String getPrintable() {return printable;}public void setPrintable(String printable) {this.printable = printable;}public String getRenderer() {return renderer;}public void setRenderer(String renderer) {this.renderer = renderer;}public String getIsCheckColumn() {return isCheckColumn;}public void setIsCheckColumn(String isCheckColumn) {this.isCheckColumn = isCheckColumn;}public String getIsCheckbox() {return isCheckbox;}public void setIsCheckbox(String isCheckbox) {this.isCheckbox = isCheckbox;}public String getEditType() {return editType;}public void setEditType(String editType) {this.editType = editType;}public String getOptions() {return options;}public void setOptions(String options) {this.options = options;}public String getValidRule() {return validRule;}public void setValidRule(String validRule) {this.validRule = validRule;}public String getValidatorFunction() {return validatorFunction;}public void setValidatorFunction(String validatorFunction) {this.validatorFunction = validatorFunction;}public String getDateFormat() {return dateFormat;}public void setDateFormat(String dateFormat) {this.dateFormat = dateFormat;}public String[] getMappingArray() {return mappingArray;}public void setMappingArray(String[] mappingArray) {this.mappingArray = mappingArray;}}

GtTag.java
package com.jframe.tag;/** * Title:自定义列表标签 * Description:  * Copyright: Copyright (c) 2009-2011 * @author:li xiao jie * @version 1.0 */import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.BodyContent;import javax.servlet.jsp.tagext.BodyTagSupport;import javax.servlet.jsp.tagext.DynamicAttributes;import org.apache.log4j.Logger;public class GtTag extends BodyTagSupport implements DynamicAttributes {private static final long serialVersionUID = -4866840081048266381L;private StringBuffer outStr=null;//最终返回页面结果private StringBuffer dataStr=null;          //从子标签中获得数据集定义private StringBuffer configStr=null;//从子标签中获得列定义信息private String id;               //列表对象唯一idprivate String dataset ; //数据集描述private String columns ; //描述private String container ; //显示位置private String toolbarPosition ; //工具栏的位置. 可选值:top bottom nullprivate String toolbarContent ;  //具栏上要显示的东西  如 nav | goto | pagesize | state | reload | printprivate String pageSize ; //每页记录数private String pageSizeList ; //可选每页记录数 如 5,10,15,20private String loadURL ; //调用的action地址private String remotePaging ; //true :后台翻页   false :前台翻页private String remoteSort ; //true :数据库排序 false :页面排序private String autoLoad ; //true :加载数据   false :第一次显示不加载数据 用于条件查询private String selectRowByCheck; //通过checkBox列 来选择行. true falseprivate String width;private String height;private StringBuffer jsCode=new StringBuffer();//扩展使用的jsprivate String beforeSaveFunction;//保存前执行的jsprivate String saveURL;private Logger log = Logger.getLogger(this.getClass());@Overridepublic int doStartTag() throws JspException {//初始化数据outStr=new StringBuffer("<script type="text/javascript" >");dataStr=new StringBuffer(" var dsConfig= {fields :[");configStr=new StringBuffer(" var colsConfig = [");if(id==null){id="grid1";}if(dataset==null){dataset="dsConfig";}if(columns==null){columns="colsConfig";}if(toolbarPosition==null){toolbarPosition="bottom";}if(toolbarContent==null){toolbarContent="nav | goto | pagesize | reload | print | state";}if(pageSize==null){pageSize="10";}if(pageSizeList==null){pageSizeList="5,10,15,20";}if(remotePaging==null){remotePaging="true";}if(remoteSort==null){remoteSort="false";}if(autoLoad==null){autoLoad="true";}if(selectRowByCheck==null){selectRowByCheck="false";}if(width==null){width="100%";}if(height==null){height="100%";}return EVAL_BODY_INCLUDE;}@Overridepublic void doInitBody() throws JspException{// TODO Auto-generated method stubsuper.doInitBody();}@Overridepublic void setBodyContent(BodyContent b) {// TODO Auto-generated method stubsuper.setBodyContent(b);}@Overridepublic int doAfterBody() throws JspException {// TODO Auto-generated method stubreturn super.doAfterBody();}@Overridepublic int doEndTag() throws JspException{try {dataStr.replace(dataStr.lastIndexOf(","), dataStr.length(), "  ]}; ");configStr.replace(configStr.lastIndexOf(","), configStr.length(), "  ]; ");JspWriter out = pageContext.getOut(); outStr.append(dataStr);outStr.append(configStr);outStr.append("var gridConfig={");outStr.append("id : ").append(""").append(id).append("",");outStr.append("dataset : ").append(dataset).append(",");outStr.append("columns : ").append(columns).append(",");outStr.append("container : ").append("'").append(container).append("',");outStr.append("toolbarPosition : ").append("'").append(toolbarPosition).append("',");outStr.append("toolbarContent : ").append("'").append(toolbarContent).append("',");outStr.append("pageSize : ").append(pageSize).append(",");outStr.append("pageSizeList : ").append("[").append(pageSizeList).append("],");outStr.append("loadURL : ").append("'").append(loadURL).append("',");outStr.append("remotePaging : ").append(remotePaging).append(",");outStr.append("remoteSort : ").append(remoteSort).append(",");outStr.append("autoLoad : ").append(autoLoad).append(",");outStr.append("selectRowByCheck : ").append(selectRowByCheck).append(",");outStr.append("width : ").append("'").append(width).append("',");outStr.append("height : ").append("'").append(height).append("'");if(beforeSaveFunction!=null){outStr.append(",beforeSave : function(reqParam){return ").append(this.beforeSaveFunction).append("(reqParam);}");}if(this.saveURL!=null){outStr.append(",saveURL : '").append(this.saveURL).append("'");outStr.append(",afterSave:function(arg1,arg2,arg3){if(arg2){alert("操作成功!");}else{this.saveSuccess();}}");}outStr.append("  };");outStr.append("var mygrid=new GT.Grid( gridConfig );");outStr.append("GT.Utils.onLoad( function(){mygrid.render();} ); ");outStr.append(this.jsCode);outStr.append("</script>");out.write(outStr.toString());this.clear();log.info(outStr.toString());} catch (Exception e) {e.printStackTrace();}return super.doEndTag();}public void setDynamicAttribute(String arg0, String arg1, Object arg2)throws JspException {}public void clear(){id=null;               dataset =null; columns =null; container =null; toolbarPosition =null; toolbarContent =null;  pageSize =null; pageSizeList =null; loadURL =null; remotePaging =null; remoteSort =null; autoLoad =null;selectRowByCheck=null;    width=null;    height=null;    jsCode=new StringBuffer();    this.beforeSaveFunction=null;    this.saveURL=null;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getDataset() {return dataset;}public void setDataset(String dataset) {this.dataset = dataset;}public String getColumns() {return columns;}public void setColumns(String columns) {this.columns = columns;}public String getContainer() {return container;}public void setContainer(String container) {this.container = container;}public String getToolbarPosition() {return toolbarPosition;}public void setToolbarPosition(String toolbarPosition) {this.toolbarPosition = toolbarPosition;}public String getToolbarContent() {return toolbarContent;}public void setToolbarContent(String toolbarContent) {this.toolbarContent = toolbarContent;}public String getPageSize() {return pageSize;}public void setPageSize(String pageSize) {this.pageSize = pageSize;}public String getPageSizeList() {return pageSizeList;}public void setPageSizeList(String pageSizeList) {this.pageSizeList = pageSizeList;}public String getLoadURL() {return loadURL;}public void setLoadURL(String loadURL) {this.loadURL = loadURL;}public String getRemotePaging() {return remotePaging;}public void setRemotePaging(String remotePaging) {this.remotePaging = remotePaging;}public String getRemoteSort() {return remoteSort;}public void setRemoteSort(String remoteSort) {this.remoteSort = remoteSort;}public String getAutoLoad() {return autoLoad;}public void setAutoLoad(String autoLoad) {this.autoLoad = autoLoad;}public StringBuffer getDataStr() {return dataStr;}public void setDataStr(StringBuffer dataStr) {this.dataStr = dataStr;}public StringBuffer getConfigStr() {return configStr;}public void setConfigStr(StringBuffer configStr) {this.configStr = configStr;}public String getSelectRowByCheck() {return selectRowByCheck;}public void setSelectRowByCheck(String selectRowByCheck) {this.selectRowByCheck = selectRowByCheck;}public String getWidth() {return width;}public void setWidth(String width) {this.width = width;}public String getHeight() {return height;}public void setHeight(String height) {this.height = height;}public StringBuffer getJsCode() {return jsCode;}public void setJsCode(StringBuffer jsCode) {this.jsCode = jsCode;}public String getBeforeSaveFunction() {return beforeSaveFunction;}public void setBeforeSaveFunction(String beforeSaveFunction) {this.beforeSaveFunction = beforeSaveFunction;}public String getSaveURL() {return saveURL;}public void setSaveURL(String saveURL) {this.saveURL = saveURL;}}


这两段代码相信大家也都明白了吧!

接着便是在web-inf下的tld文件了  文件名:gt-tag.tld

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
  <description><![CDATA["Gt-Grid Tag "]]></description>
  <display-name>"GT Tags"</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>s</short-name>
  <uri>/gt-tags</uri>
  <tag>
    <description><![CDATA[GT-Grid Configs ]]></description>
    <name>table</name>
    <tag-class>com.jframe.tag.GtTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <description><![CDATA[]]></description>
      <name>id</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>dataset</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>columns</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>container</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>toolbarPosition</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>toolbarContent</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>pageSize</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>pageSizeList</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>loadURL</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>remotePaging</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>remoteSort</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>autoLoad</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>selectRowByCheck</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>width</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>height</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>beforeSaveFunction</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
   
    <attribute>
      <description><![CDATA[]]></description>
      <name>saveURL</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <dynamic-attributes>true</dynamic-attributes>
  </tag>
  <tag>
    <description><![CDATA[GT-Grid Column  ]]></description>
    <name>column</name>
    <tag-class>com.jframe.tag.GtColumnTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <description><![CDATA[]]></description>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>type</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>index</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>initValue</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>id</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>header</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>fieldName</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>minWidth</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>width</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>align</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>sortable</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>sortOrder</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>hidden</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>printable</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>renderer</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>isCheckColumn</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>isCheckbox</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>dateFormat</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>editType</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>options</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>validRule</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
   <attribute>
      <description><![CDATA[]]></description>
      <name>validatorFunction</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <description><![CDATA[]]></description>
      <name>mappingArray</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <dynamic-attributes>true</dynamic-attributes>
  </tag>
</taglib>


到这里基本上就都完了  然后就是jsp页面的使用

<%@ page language="java" contentType="text/html; charset=UTF-8"%><%@ taglib uri="/gt-tags" prefix="t"%><%@ include file="/common/head.jsp" %> <%@ page import="com.jframe.yxl.common.Contants" %> <html>  <head><script type="text/javascript" src="<%=path%>/common/js/manager/newslist.js"></script>  </head><body><table width="100%" align="center" border="0" cellpadding="3" cellspacing="1" bgcolor="#CBD8AC" style="margin-bottom:8px;margin-top:8px;">  <tr>    <td background="<%=path %>/common/image/manager/hd_row_bg.gif" align="center" style="font-size:14px;color:#666600;font-weight:bold;">    新 闻 管 理</td>  </tr>  <tr bgcolor="#FFFFFF">    <td>    <a href="toAddNews.do" title="添加一个新闻">新闻发布</a>&nbsp;&nbsp;    <a title="现在就在这里">新闻列表</a>&nbsp;&nbsp;    <a href="#" onclick="newsManager(0)" title="关闭选中新闻项的留言功能">留言屏蔽</a>&nbsp;&nbsp;    <a href="#" onclick="newsManager(1)" title="开启选中新闻项的留言功能">留言启用</a>    <a href="#" onclick="deleteAll()" >删除选中</a>     </td>  </tr></table><form name="queryForm"><div style="width:100%;" ><div align="right">新闻类型:</td><td width="30%"><select name="newsType" id=newsType><option value="">--请选择--</option><s:iterator id="type" value="%{#request.newsType}">    <option value="${type.newsTypeUuid}">${type.newsTypeName }</option>  </s:iterator>  </select></td><td width="20%" align="right">标题:</td><td width="30%"><input size="30" id="newstitle"></td></tr><tr><td width="20%" align="right">发布人名称:</td><td width="30%"><input size="30" id="createnewsusername"> </td><td width="20%" align="right">关键字:</td><td width="30%"><input size="30" title="多个关键字请用空格隔开"  id="newskeys"></td></tr><tr><td width="20%" align="right">发布日期:</td><td width="30%">起:<input size="10" title="开始日期" readonly id="qtime">--止:<input size="10" readonly title="结束"  id="ztime"></td><td width="20%" align="right">链接地址</td>    <td width="30%"><input size="30"  id="newurl">              &nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr>  <td colspan="2" align="right"><input type="button" value="查询" onClick="query()" /></td>  <td colspan="2"><input type="reset" value="重置" /></td>  </tr></table></div></div></form><div id="grid1_container"></div><t:table container="grid1_container" loadURL="newsList.do" selectRowByCheck="true" >    <t:column name="newsUuid" header="编号" type="string" fieldName="newsUuid" isCheckColumn="true"></t:column>   <t:column name="newsTitle" header="标题"  fieldName="newsTitle"></t:column>   <t:column name="newsCreateUserName" header="发布人" fieldName="newsCreateUserName"></t:column>   <t:column name="newsCreateDate" type="date" dateFormat="yyyy-MM-dd HH:mm" header="发布时间" fieldName="newsCreateDate"></t:column>   <t:column name="newsRequestCount"   header="访问数" fieldName="newsRequestCount"></t:column>   <t:column name="newsSurportCount"  header="支持数" fieldName="newsSurportCount"></t:column>   <t:column name="newsAgainstCount" header="反对数"  fieldName="newsAgainstCount"></t:column>   <t:column name="newsMessageEnable" renderer="GT.Grid.mappingRenderer(  {'0': '不启用' , '1':'启用'},'未知' )" header="是否启用留言屏蔽" fieldName="newsMessageEnable"></t:column>   <t:column name="newsManager" fieldName="newsManager" header="操作" sortable="false"></t:column>   </t:table>     <div id="infoDiv" style=" display:none;position:absolute; z-index:5; top:20px; left:20px; border:solid 4px #CCCCCC; background-color:#E6FFF3; height:600px; width:800px; overflow-y:auto;">    <table width="100%" border="0" style="font-size:14px;color:#666666;font-weight:bold;" colspan="4">新闻信息详情 &nbsp;&nbsp;<a href="#" onclick="javascript:$('#infoDiv').hide(500),$('#newsType').show();">关闭</a></td>      </tr>      <tr>        <td width="20%" align="right">标题:</td>        <td width="30%"> <label id="lnewsTitle"></label> </td>        <td width="20%" align="right">所属类型:</td>        <td width="30%"><label id="lnewsType"></label></td>      </tr>      <tr>                <td align="right">来源:</td>        <td colspan="3"><label id="lnewsSource"></label></td>      </tr>            <tr>        <td align="right">内容摘要:</td>        <td colspan="3"><label id="lnewsContantZy"></label></td>      </tr>      <tr>        <td align="right">搜索关键字:</td>        <td colspan="3"><label id="lnewsSearchDes"></label></td>      </tr>      <tr>        <td align="right">搜索描述:</td>        <td colspan="3"><label id="lnewsSearchMate"></label></td>      </tr>      <tr>        <td align="right">访问地址:</td>        <input type="hidden" id="path" value="<%=path %>/<%=Contants.HTMl_NEWS_FILE %>">        <td colspan="3"><label id="lnewsUrl"></label></td>      </tr>      <tr>        <td align="right">目前访问量:</td>        <td colspan="3"><label id="lnewsRequestCount"></label></td>      </tr>      <tr>        <td align="right">目前反对数:</td>        <td><label id="lnewsAgainstCount"></label></td>        <td align="right">目前支持数:</td>        <td><label id="lnewsSurportCount"></label></td>      </tr>        <tr>        <td align="right">新闻发布人:</td>        <td><label id="lnewsCreateUserName"></label></td>        <td align="right">新闻发布时间:</td>        <td><label id="lnewsCreateDate"></label></td>      </tr>      <tr>        <td align="right">最后修改人:</td>        <td><label id="lnewsUpdateUserName"></label></td>        <td align="right">最后修改时间:</td>        <td><label id="lnewsUpdateTime"></label></td>      </tr>      <tr>        <td align="right">留言是否屏蔽:</td>        <td><label id="lnewsMessageEnable"></label></td>        <td align="right">新闻内容:</td>        <td>见下</td>      </tr>      <tr>        <td colspan="4" id="lnewsContant"></td>      </tr>    </table></div>    </body> </html><%@ include file="/common/bottom.jsp" %>  

部分js
$(function(){$("#qtime").click(function(){WdatePicker({skin:'whyGreen',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})});$("#ztime").click(function(){WdatePicker({skin:'whyGreen',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})});});function query(){var param = {newsTitle:document.getElementById("newstitle").value, newsKeys:document.getElementById("newskeys").value, createUserName:document.getElementById("createnewsusername").value, newsUrl:document.getElementById("newUrl").value, qTime:document.getElementById('qtime').value, zTime:document.getElementById('ztime').value, newsType:document.getElementById('newsType').value};mygrid.query(param);}/*newsInfo 不能随便更改的函数*/function newsInfo( op, newsid){if(op == "info"){//显示信息$.post( "findNewsById.do", {newsUuid:newsid}, function(data) {  $("#lnewsTitle").html(data.news.newsTitle); $("#lnewsSource").html(data.news.newsSource); $("#lnewsSearchMate").html(data.news.newsSearchMate); $("#lnewsContantZy").html(data.news.newsContantZy); $("#lnewsSearchDes").html(data.news.newsSearchDes); $("#lnewsSearchMate").html(data.news.newsSearchMate); $("#lnewsUrl").html("<a href='"+$("#path").val()+"/"+data.news.newsUrl+"' target='_blank' >"+data.news.newsUrl+"</a>"); $("#lnewsRequestCount").html(data.news.newsRequestCount); $("#lnewsAgainstCount").html(data.news.newsAgainstCount); $("#lnewsCreateUserName").html(data.news.newsCreateUserName); $("#lnewsSurportCount").html(data.news.newsSurportCount); $("#lnewsUpdateUserName").html(data.news.newsUpdateUserName); $("#lnewsCreateDate").html(data.news.newsCreateDate.replace(/T/," ")); $("#lnewsUpdateTime").html(data.news.newsUpdateTime.replace(/T/," ")); $("#lnewsMessageEnable").html(data.news.newsMessageEnable==1?"启用":"禁用"); $("#lnewsContant").html(data.news.newsContant); var types = data.news.newsTypes; for(i=0;i<types.length;i++) { $("#lnewsType").html($("#lnewsType").html()+types[i]+" "); } $("#infoDiv").show(700); }, "json");$("#newsType").hide();}else if(op=="update"){//修改document.location.assign("toNewsUpdate.do?newsUuid="+newsid);}else if(op=="delete"){//删除if(confirm("确定要删除这条数据吗?")){document.location.assign("newsDelete.do?newsUuid="+newsid);}}else{alert("参数不正确!");}}function deleteAll(){var checkboxs = mygrid.getSelectedRecords();if(checkboxs.length==0){alert("您还没有选择您要操作的项目!");return;}else{if(confirm("确定一次操作这"+checkboxs.length+"条数据!")){var url="newsDelete.do?newsUuid=";for(i=0;i<checkboxs.length;i++){if(i==checkboxs.length-1)url+=checkboxs[i].newsUuid;elseurl+=checkboxs[i].newsUuid+"&newsUuid=";}document.location.assign(url);}}}/**新闻留言屏蔽与开启的功能函数 op 1为启用 0 为关闭*/function newsManager(op){var checkboxs = mygrid.getSelectedRecords();if(checkboxs.length==0){alert("您还没有选择您要操作的新闻项目!");return;}else{if(confirm("确定一次操作这"+checkboxs.length+"条数据!")){var url="updatenewsMessageEnable.do?newsUuid=";for(i=0;i<checkboxs.length;i++){if(i==checkboxs.length-1)url+=checkboxs[i].newsUuid;elseurl+=checkboxs[i].newsUuid+"&newsUuid=";}url+="&newsMessageEnable="+op;document.location.assign(url);}}}


到此结束

热点排行
Bad Request.