`
gzwfdy
  • 浏览: 85681 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

dhtmlxgrid 2.0 标准版 dwr实现增、删、改、查

阅读更多
dhtmlxgrid 2.0支持四种类型的数据:

- xml;- csv;- json;- javascript array.

下面只介绍xml,json类型的数据。

一、xml类型

dhtmlxgrid要求的xml格式如下:
<rows>
  <head>
    <beforeInit>
      <call command="methodName"><param>string value</param></call>
    </beforeInit>
    <afterInit>
      <call command="methodName"><param>string value</param></call>
    </afterInit>
    <column width="50" type="ed" align="right" color="white"   sort="str">Sales</column>
    <column width="80" type="co" align="left" sort="str">Shipping
      <option value="1">1 Day</option>
      <option value="7">1 Week</option>
      ...
    </column>
    ...
    <settings>
      <colwidth>%</colwidth>
    </settings>
  </head>
  <row id="1">
    <cell>text</cell>
  ...
  </row>
  ...
</rows>


<column>标签之间的文字是就是列标题

column 可用的属性有:
  • width - 宽,单位是像素
  • type - 列的类型
  • align - 单元格文本对齐方式
  • color - 列背景颜色
  • sort - 排序类型
  • id - 列id,可选
  • hidden -这个是专业版的属性,标准版不能使用。
  • 设置列宽的单位是%,不设置默认是像素px。

    <row>表格中的每一行,要有唯一的id值属性。
    <cell>一行中的一个单元格。
    xml中常用的字符串常量
    package com.javaeye.gzwfdy.util;
    public class Constants {
    	public static final String XML_VERSION 
                             = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
    
    	public static final String XML_ROWS_BEGIN = "<rows>";
    
    	public static final String XML_ROWS_END = "</rows>";
    
    	public static final String XML_HEAD_BEGIN = "<head>";
    
    	public static final String XML_HEAD_END = "</head>";
    
    	public static final String XML_AFTERINIT_BEGIN = "<afterInit>";
    
    	public static final String XML_AFTERINIT_END = "</afterInit>";
    	
    	public static final String XML_BEFOREINIT_BEGIN = "<beforeInit>";
    	
    	public static final String XML_BEFOREINIT_END = "</beforeInit>";
    	
    	public static final String XML_CELL_BEGIN = "<cell>";
    
    	public static final String XML_CELL_END = "</cell>";
    }


    下面这个类构造列,单元格,设置皮肤
    package com.javaeye.gzwfdy.util;
    public class GridXmlBuilder {
    
    	public static StringBuffer createColumnXML(String width, String type,
    			String align, String sort, String text){
    		StringBuffer xml = new StringBuffer();
    		if(width == null)
    			width = "0";
    		if(text == null)
    			text = "";
    		xml.append("<column ");
    		xml.append("width=\"").append(width).append("\" ");
    		xml.append("type=\"").append(type).append("\" ");
    		xml.append("align=\"").append(align).append("\" ");
    		xml.append("sort=\"").append(sort).append("\"");
    		xml.append(">");
    		xml.append(text);
    		xml.append("</column>");
    		return xml;
    	}
    	
    	public static StringBuffer setGridSkin(String skin){
    		StringBuffer xml = new StringBuffer();
    		xml.append(Constants.XML_BEFOREINIT_BEGIN);
    		xml.append("<call command=\"setSkin\">").append("<param>").append(skin).append("</param></call>");
    		xml.append(Constants.XML_BEFOREINIT_END);
    		return xml;
    		
    	}
    	
    	public static StringBuffer createGridCellXml(Object value) {
    		if (value == null)
    			value = "";
    		StringBuffer xml = new StringBuffer();
    		xml.append(Constants.XML_CELL_BEGIN);
    		xml.append(value);
    		xml.append(Constants.XML_CELL_END);
    		return xml;
    	}
    }
    


    下面这个类包含查询,删除,保存方法。里面有返回json数据的方法
    package com.javaeye.gzwfdy.service.manager;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import net.sf.json.JSONObject;
    
    import org.apache.log4j.Logger;
    
    import com.javaeye.gzwfdy.dao.hibernate.IDhtmlxGridDAO;
    import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid;
    import com.javaeye.gzwfdy.exception.DAOException;
    import com.javaeye.gzwfdy.exception.HandleException;
    import com.javaeye.gzwfdy.service.interfaceManager.IDhtmlxGridManager;
    import com.javaeye.gzwfdy.util.Constants;
    import com.javaeye.gzwfdy.util.GridXmlBuilder;
    import com.javaeye.gzwfdy.vo.GridData;
    import com.javaeye.gzwfdy.vo.Rows;
    
    public class DhtmlxGridManagerImpl implements IDhtmlxGridManager {
    	/**
    	 * Logger for this class
    	 */
    	private static final Logger logger = Logger
    			.getLogger(DhtmlxGridManagerImpl.class);
    	
    	private IDhtmlxGridDAO dhtmlxGridDAO;
    	
    	/**
    	 * @param dhtmlxGridDAO the dhtmlxGridDAO to set
    	 */
    	public void setDhtmlxGridDAO(IDhtmlxGridDAO dhtmlxGridDAO) {
    		this.dhtmlxGridDAO = dhtmlxGridDAO;
    	}
    
    	public String getInitGridXML() throws HandleException {
    		return this.BuildGridXML();
    	}
    
    	private String BuildGridXML()
    	{
    		StringBuffer xml = new StringBuffer();
    		xml.append(Constants.XML_VERSION);
    		xml.append(Constants.XML_ROWS_BEGIN);
    		xml.append(createHeadXML());
    		xml.append(Constants.XML_ROWS_END);
    		logger.info("构造表格XML为:" + xml);
    		return xml.toString();
    	}
    	
    	private StringBuffer createHeadXML(){
    		StringBuffer xml = new StringBuffer();
    		xml.append(Constants.XML_HEAD_BEGIN);
    		//xml.append(GridXmlBuilder.setGridSkin("modern"));
    		//xml.append(GridXmlBuilder.setGridSkin("gray "));
    		//xml.append(GridXmlBuilder.setGridSkin("xp"));
    		//xml.append(GridXmlBuilder.setGridSkin("mt"));
    		xml.append(GridXmlBuilder.setGridSkin("light"));
    		//xml.append(GridXmlBuilder.setGridSkin("clear"));
    		xml.append(GridXmlBuilder.createColumnXML("20", "ch", "left", "int", ""));
    		xml.append(GridXmlBuilder.createColumnXML("730", "ed", "left", "str", "消息"));
    		xml.append(GridXmlBuilder.createColumnXML("90", "ed", "left", "str", "来源"));
    		xml.append(GridXmlBuilder.createColumnXML("0", "ro", "left", "str", ""));
    		xml.append(Constants.XML_HEAD_END);
    		return xml;
    	}
    
    	public String getJsonData() throws HandleException {
    		List<Dhtmlxgrid> list = null;
    		List<GridData> gridDataList = new ArrayList<GridData>();
    		Rows rows = new Rows();
    		try {
    			 list = this.dhtmlxGridDAO.getData();
    		} catch (DAOException e) {
    			// TODO: handle exception
    		}
    		for (Dhtmlxgrid dhtmlxgrid : list) {
    			gridDataList.add(this.BuildeJsonData(dhtmlxgrid));
    		}
    		rows.setRows(gridDataList);
                       /**
                       * 需要json-lib-2.2.2-jdk15.jar、ezmorph-1.0.5.jar
                      */
    		JSONObject object = JSONObject.fromObject(rows);
    		return object.toString();
    	}
    	
    	private GridData BuildeJsonData(Dhtmlxgrid dhtmlxgrid){
    		GridData griddata = new GridData();
    		String id = dhtmlxgrid.getId().toString();
    		String[] data = {"0",dhtmlxgrid.getMessage(),dhtmlxgrid.getInfosrc(),dhtmlxgrid.getId().toString()};
    		griddata.setId(id);
    		griddata.setData(data);
    		return griddata;
    	}
    
    	public String getXMLData() throws HandleException {
    		StringBuffer xml = new StringBuffer();
    		xml.append(Constants.XML_VERSION);
    		xml.append(Constants.XML_ROWS_BEGIN);
    		List<Dhtmlxgrid> list = null;
    		try {
    			 list = this.dhtmlxGridDAO.getData();
    		} catch (DAOException e) {
    			e.printStackTrace();
    			throw new HandleException("getXMLData错误");
    		}
    		for (Dhtmlxgrid dhtmlxgrid2 : list) {
    			xml.append(this.buildXMLData(dhtmlxgrid2));
    		}
    		xml.append(Constants.XML_ROWS_END);
    		logger.info("XML为:" + xml);
    		return xml.toString();
    	}
    	
    	private StringBuffer buildXMLData(Dhtmlxgrid dhtmlxgrid){
    		StringBuffer xml = new StringBuffer();
    		xml.append("<row id=\"" + dhtmlxgrid.getId().intValue() + "\">");
    		xml.append(GridXmlBuilder.createGridCellXml("0"));
    		xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getMessage()));
    		xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getInfosrc()));
    		xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getId()));
    		xml.append("</row>");
    		return xml;
    	}
    
    	public boolean saveData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException {
    		try {
    			for (Dhtmlxgrid dhtmlxgrid2 : dhtmlxgrid) {
    				if (dhtmlxgrid2.getId() == null) {
    					//dhtmlxgrid2.setId(null);
    					this.dhtmlxGridDAO.saveData(dhtmlxgrid2);
    				} else
    					this.dhtmlxGridDAO.updateData(dhtmlxgrid2);
    			}
    		} catch (DAOException e) {
    			e.printStackTrace();
    			throw new HandleException("保存错误");
    		}
    		return true;
    	}
    
    	public boolean deleteData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException {
    		try {
    			for (Dhtmlxgrid dhtmlxgrid2 : dhtmlxgrid) {
    				this.dhtmlxGridDAO.deleteData(dhtmlxgrid2);
    			}
    		} catch (DAOException e) {
    			e.printStackTrace();
    			throw new HandleException("删除失败");
    		}
    		return true;
    	}
    }
    

    Dhtmlxgrid是hibernate的数据库映射文件,再次为了方便直接在Service层使用,在实际项目中不推进这样做。Dhtmlxgrid代码如下
    package com.javaeye.gzwfdy.dao.hibernate.po;
    
    
    
    /**
     * Dhtmlxgrid entity. @author MyEclipse Persistence Tools
     */
    
    public class Dhtmlxgrid  implements java.io.Serializable {
    
    
        // Fields    
    
         private Integer id;
         private String message;
         private String infosrc;
    
    
        // Constructors
    
        /** default constructor */
        public Dhtmlxgrid() {
        }
    
        
        /** full constructor */
        public Dhtmlxgrid(String message, String infosrc) {
            this.message = message;
            this.infosrc = infosrc;
        }
    
       
        // Property accessors
    
        public Integer getId() {
            return this.id;
        }
        
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getMessage() {
            return this.message;
        }
        
        public void setMessage(String message) {
            this.message = message;
        }
    
        public String getInfosrc() {
            return this.infosrc;
        }
        
        public void setInfosrc(String infosrc) {
            this.infosrc = infosrc;
        }
    }
    

    GridData、Rows都是构造json字符串用到的。这里返回字符串到前台,但是不能直接使用,还要转成json对象。我没想到更好的办法做这件事情
    GridData代码:
    package com.javaeye.gzwfdy.vo;
    
    
    public class GridData {
    
    	private String id;
    	private String[] data;
    	/**
    	 * @return the id
    	 */
    	public String getId() {
    		return id;
    	}
    	/**
    	 * @param id the id to set
    	 */
    	public void setId(String id) {
    		this.id = id;
    	}
    	/**
    	 * @return the data
    	 */
    	/**
    	 * @return the data
    	 */
    	public String[] getData() {
    		return data;
    	}
    	/**
    	 * @param data the data to set
    	 */
    	public void setData(String[] data) {
    		this.data = data;
    	}
    }
    

    Rows代码:
    package com.javaeye.gzwfdy.vo;
    
    import java.util.List;
    
    public class Rows {
    
    	private List rows;
    
    	/**
    	 * @return the rows
    	 */
    	public List getRows() {
    		return rows;
    	}
    
    	/**
    	 * @param rows the rows to set
    	 */
    	public void setRows(List rows) {
    		this.rows = rows;
    	}
    }
    

    服务层接口代码IDhtmlxGridManager:
    package com.javaeye.gzwfdy.service.interfaceManager;
    
    import java.util.List;
    
    import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid;
    import com.javaeye.gzwfdy.exception.HandleException;
    
    public interface IDhtmlxGridManager {
    
    	/**
    	 * 初始化表头
    	 * @return
    	 * @throws HandleException
    	 */
    	public String getInitGridXML() throws HandleException;
    	
    	/**
    	 * json数据
    	 * @return
    	 * @throws HandleException
    	 */
    	public String getJsonData() throws HandleException;
    	
    	/**
    	 * XML数据
    	 * @return
    	 * @throws HandleException
    	 */
    	public String getXMLData() throws HandleException;
    	/**
    	 * 
    	 * <p>
    	 * Discription: 
    	 * </p>
    	 * @author guozhw 	
    	 * @param dhtmlxgrid
    	 * @return
    	 * @throws HandleException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public boolean saveData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException;
    	/**
    	 * 
    	 * <p>
    	 * Discription: 
    	 * </p>
    	 * @author guozhw 	
    	 * @return
    	 * @throws HandleException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public boolean deleteData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException;
    }
    

    HandleException代码:
    package com.javaeye.gzwfdy.exception;
    
    public class HandleException extends Exception {
    	
    	public HandleException() {
    		super();
    	}
    
    	public HandleException(String message) {
    		super(message);
    	}
    }
    
    

    dao层接口代码:
    package com.javaeye.gzwfdy.dao.hibernate;
    
    import java.util.List;
    
    import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid;
    import com.javaeye.gzwfdy.exception.DAOException;
    
    public interface IDhtmlxGridDAO {
    
    	/**
    	 * 
    	 * <p>
    	 * Discription: 查询方法
    	 * </p>
    	 * @author guozhw 	
    	 * @return
    	 * @throws DAOException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public List<Dhtmlxgrid> getData() throws DAOException;
    	/**
    	 * 
    	 * <p>
    	 * Discription: 保存
    	 * </p>
    	 * @author guozhw 	
    	 * @param grid
    	 * @throws DAOException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public void saveData(Dhtmlxgrid grid) throws DAOException;
    	
    	/**
    	 * 
    	 * <p>
    	 * Discription: 更新
    	 * </p>
    	 * @author guozhw 	
    	 * @param grid
    	 * @throws DAOException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public void updateData(Dhtmlxgrid grid) throws DAOException;
    	/**
    	 * 
    	 * <p>
    	 * Discription: 删除
    	 * </p>
    	 * @author guozhw 	
    	 * @param grid
    	 * @throws DAOException
    	 * @since
    	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
    	 */
    	public void deleteData(Dhtmlxgrid grid) throws DAOException;
    	
    
    }
    

    dao接口实现类:
    package com.javaeye.gzwfdy.dao.hibernate;
    
    import java.util.List;
    
    import org.springframework.dao.DataAccessException;
    
    import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid;
    import com.javaeye.gzwfdy.exception.DAOException;
    import com.javaeye.gzwfdy.util.AbstractHbmBaseDao;
    
    public class DhtmlxGridDAOImpl extends AbstractHbmBaseDao implements IDhtmlxGridDAO {
    
    	
    	@SuppressWarnings("unchecked")
    	public List<Dhtmlxgrid> getData() throws DAOException {
    		return this.findAll(Dhtmlxgrid.class);
    	}
    
    	public void saveData(Dhtmlxgrid grid) throws DAOException {
    		try {
    			this.save(grid);
    		} catch (DataAccessException e) {
    			e.printStackTrace();
    			throw new DAOException(e.getMessage());
    		}
    		
    	}
    	
    	public void updateData(Dhtmlxgrid grid) throws DAOException {
    		try {
    			this.update(grid);
    		} catch (DataAccessException e) {
    			e.printStackTrace();
    			throw new DAOException(e.getMessage());
    		}
    		
    	}
    
    	public void deleteData(Dhtmlxgrid grid) throws DAOException {
    		try {
    			this.delete(grid);
    		} catch (DataAccessException e) {
    			e.printStackTrace();
    			throw new DAOException(e.getMessage());
    		}
    		
    	}
    
    }
    
    

    dao异常类:
    package com.javaeye.gzwfdy.exception;
    
    public class DAOException extends Exception {
    	
    	public DAOException(String message) {
    		super(message);
    	}
    
    	public DAOException() {
    		super();
    	}
    }
    
    

    到此后台代码都已经完成了。前台使用dwr远程调用这些方法。spring就不写出来。dwr.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr>
    	<allow>
    <create creator="spring" javascript="dhtmlxGridManager"
    			scope="request">
    			<param name="beanName" value="dhtmlxGridManager" />
    			<include method="getXMLData"/>
    			<include method="saveData"/>
    			<include method="getInitGridXML"/>
    			<include method="deleteData"/>
    	  </create>
    <convert converter="bean" 
    			match="com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid" >
    		</convert>
    </allow>
    
    	<signatures>
    		<![CDATA[
    		import java.util.List;
    		import java.util.Map;
    		import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid;
    		dhtmlxGridManager.saveData(List<Dhtmlxgrid>);
    		dhtmlxGridManager.deleteData(List<Dhtmlxgrid>);
    	  ]]>
    	</signatures>
    
    </dwr>
    

    jsp代码也不列出来了,增加操作对应的js方法为add(),删除操作对应js方法del(),保存save();jsp页面中body中加入onload="initGrid('<%=contextPath %>');"
    String contextPath = request.getContextPath();
    js代码如下:
    /**
     * 页面初始化
     */
    //window.onload = initGrid;
    
    var mygrid;
    var path;
    // 初始化表格
    function initGrid(contextPath)
    {
      path = contextPath;
      dhtmlxGridManager.getInitGridXML(function(xml)
      {
        mygrid = new dhtmlXGridObject('gridbox');
        mygrid.setImagePath(contextPath + "/dhtmlxSuite/dhtmlxGrid/codebase/imgs/");
        mygrid.init();
        mygrid.parse(xml, loadData, "xml");
    	//mygrid.attachHeader("A,B,C",["text-align:right;","text-align:left;","text-align:center"],"ewrtwertrt"); 
    	//mygrid.adjustColumnSize(1);
        //mygrid.enableLightMouseNavigation(true);
        //mygrid.enableKeyboardSupport(true);
        //mygrid.lockRow(1, false);
      });
    }
    
    function loadData()
    {
      dhtmlxGridManager.getXMLData(function(data)
      {
        mygrid.clearAll();
        mygrid.parse(data);
      });
      /**
      
       * dhtmlxGridManager.getJsonData(function(data)
      
       {
      
       mygrid.parse(eval('(' + data + ')'), "json");
      
       });
      
       */
      
    }
    
    /**
     * 新增按钮处理
     */
    function add()
    {
      mygrid.addRow(mygrid.uid(), getAddRowString(), getRowIndex());
    }
    
    function getRowIndex()
    {
      var selectedId = mygrid.getSelectedId();
      var rowIndex;
      if (selectedId) 
      {
        rowIndex = mygrid.getRowIndex(selectedId) + 1;
      }
      else 
      {
        rowIndex = mygrid.getRowsNum();
      }
      return rowIndex;
    }
    
    function getAddRowString()
    {
      return "0,,";
    }
    
    /**
     * 保存按钮处理
     */
    function save()
    {
      var changedRowIds = getChangedRowIds();
      if (changedRowIds && changedRowIds.length == 0) 
        return;
      var dhtmlxgrid = buildObjects(changedRowIds);
      dhtmlxGridManager.saveData(dhtmlxgrid, function callback(data)
      {
        if (data) 
        {
          alert("保存成功!");
        }
        else 
        {
          alert("保存失败!");
        }
        loadData();
        changedRowIds = new Array();
      });
    }
    
    /**
     * 获取表格所有改变过的行编号
     */
    function getChangedRowIds()
    {
      var changedRowIds = new Array();
      var allRowIds = mygrid.getAllItemIds().split(",");
      for (var i = 0; i < mygrid.getRowsNum(); i++) 
      {
        for (var j = 0; j < mygrid.getColumnCount(); j++) 
        {
          if (mygrid.cells(allRowIds[i], j).wasChanged() &&
          !changedRowIds.IsInclude(allRowIds[i])) 
          {
            changedRowIds[changedRowIds.length] = allRowIds[i];
            break;
          }
        }
      }
      return changedRowIds;
    }
    
    function buildObjects(changedRowIds)
    {
      var dhtmlxgrid = new Array();
      for (var i = 0; i < changedRowIds.length; i++) 
      {
        var rowId = changedRowIds[i];
        dhtmlxgrid[dhtmlxgrid.length] = buildObject(rowId);
      }
      return dhtmlxgrid;
    }
    
    function buildObject(rowId)
    {
      return {
        id: mygrid.cells(rowId, mygrid.getColumnCount() - 1).getValue(),
        message: mygrid.cells(rowId, 1).getValue(),
        infosrc: mygrid.cells(rowId, 2).getValue()
      };
    }
    
    
    //-----------------------
    function getValue(value)
    {
      return value == null || value == 'null' ? "" : value;
    }
    
    Array.prototype.IsInclude = function(value)
    {
      for (var i = 0; i < this.length; i++) 
      {
        var element = this[i];
        if (element == value) 
        {
          return true;
        }
      }
      return false;
    }
    //---------------
    /**
     * 删除按钮处理
     */
    function del()
    {
      var checkedRowIds = getCheckedRowIds();
      if (checkedRowIds && checkedRowIds.length > 0) 
      {
        if (confirm("请确认是否删除所选记录?")) 
        {
          var deletegrid = buildObjects(checkedRowIds);
          dhtmlxGridManager.deleteData(deletegrid, function callback(data)
          {
            if (data) 
            {
              alert("删除成功!");
            }
            else 
            {
              alert("删除失败!");
            }
            loadData();
    		checkedRowIds = new Array();
          });
        }
      }
      else 
      {
        alert("请选中删除记录!");
      }
    }
    
    function getCheckedRowIds()
    {
      var checkedRowIds = new Array();
      var allRowIds = mygrid.getAllItemIds().split(",");
      if (allRowIds) 
      {
        for (var i = 0; i < allRowIds.length; i++) 
        {
          if (mygrid.cells(allRowIds[i], 0).getValue() == 1) 
          {
            checkedRowIds[checkedRowIds.length] = allRowIds[i];
          }
        }
      }
      return checkedRowIds;
    }
    
    
    

    分享到:
    评论
    3 楼 fxiaozj 2012-08-31  
    不知道能不能把JSON写一个通用的,要不然每个entity都得写一个JSON进行转换。
    2 楼 mfkwfc 2012-05-28  
    为什么没看到json数据的格式呢?
    1 楼 exindedan 2011-07-22  
    非常不错的教程,写得也很详细!
    希望能附上源代码!
    赞一个!

    相关推荐

      AJAX-dwr实现增删改查的示例代码

      AJAX-dwr实现增删改查的示例代码是一个非常实用的学习资源,对于初学者来说,它可以帮助理解DWR的工作原理和配置方式,以及如何在实际项目中利用DWR进行动态数据交互。通过这个例子,开发者可以进一步掌握AJAX技术,...

      封装Ext.grid.Grid+dwr实现增删该查

      总的来说,通过封装`Ext.grid.Grid`和DWR,我们可以构建出一个强大的Web应用,提供直观且高效的增删改查功能。这种技术组合在现代企业级Web应用中非常常见,因为它能够有效地处理大量数据,同时保持良好的用户交互性...

      Struts中的Dwr增删改查

      通过以上步骤,你可以在Struts框架中利用DWR实现高效的前端与后端交互,完成对数据的增删改查操作。这种方式不仅简化了开发流程,也提高了用户的交互体验。在实际项目中,还需要根据具体需求进行调整和扩展,确保...

      struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子

      总结起来,这个"struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子"涵盖了Web开发中的一些核心技术和实践,对于初学者来说,这是一个很好的学习资源,能够帮助他们快速掌握Java Web开发的基础知识,并逐步深入到更...

      dwr增删改查

      这个"**dwr增删改查**"的例子,正如标题和描述所提及,是一个非常基础且实用的教程,特别适合初学者了解和掌握DWR的基本用法,包括如何进行数据的添加、删除、修改和查询操作。 DWR的核心功能在于提供了一种方式,...

      SSH+ajax(DWR)增删改查+分页

      采用SSH+ajax(DWR)实现增删改查+分页的功能!!含有数据库!可以直接运行!

      JDBC连接MySql数据库+增删改查+分页+DWR增删改查 分页

      在本项目中,DWR被用来实现在不刷新整个页面的情况下进行数据的增删改查操作。用户可以通过前端界面发送请求,DWR将这些请求转换为Java方法调用,执行后返回结果,前端再根据结果更新显示,极大地提升了用户体验。 ...

      一键自动生成增删改查的jsp web 项目 爽的很

      该项目通过一键完成:自动生成指定表的增删改查功能(是用ajax完成的哦) 无刷新的。 使用的是jsp+jquery+struts2+dwr+hibernate+freemarker 下载后导入到myeclipse中部署到tomcat6上即可。 注意先按照方法初始化...

      s2sh与dwr整合实现的增删改查

      本项目"s2sh与dwr整合实现的增删改查"旨在演示如何将这三个技术有效地融合在一起,以提供一个完整的、用户友好的Web应用。 1. **s2sh框架**:Struts2负责处理HTTP请求并映射到相应的Action,Spring管理Bean并提供...

      SSH+DWR+EXT 增删改查

      在SSH框架中,DWR可以用来更新页面内容,实现动态无刷新的增删改查功能。 EXTJS(现在被称为Sencha Ext JS)是一个JavaScript UI库,用于创建富客户端应用程序。 5. **EXTJS**:EXTJS提供了大量的预定义组件,如...

      easyui+dwr+oracle实现增删改查(可编辑表格以及弹出框)。

      建立Oracle数据库和tomcat等环境,自己修改一下用户名...有多层嵌套,因为是当时练手的,所以很简单的例子(不排除里面有些垃圾代码),对增删改查实现了弹出框(煤炭基建)和可编辑表格(电源基建)也有后台分页功能。

      JavaEE源代码 dwr.jar 2.0

      JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源...

      SSH+ajax(DWR)增删改查+分页SSHTest(导入即用).rar

      这个是一个ssh+ajax的增删改查实例,很适合刚入门的程序员,在项目中发展肯定要比你整天坐着看书好,希望会对大家有用

      Spring+Hibernate+Ext+dwr增删改查

      Spring+Hibernate+Ext+dwr做的一个简单的grid的增删改查,面板布局, 通过autoload方式载入grid ,以及XML树的建立 ,连接MySql数据库 。JS文件代码在Demo文件夹下,JAVA代码在src下。适合新手

      dwr2.0 dwr3.0 jar包

      这个主题主要围绕DWR的两个主要版本——DWR 2.0和DWR 3.0,以及它们与jar包的关联。 首先,DWR 2.0是DWR项目的一个早期版本,它引入了核心的远程方法调用(Remote Method Invocation, RMI)功能,使得JavaScript...

      SSI 增删改查

      #### 一、SSI与Spring、Struts结合实现增删改查 在Java开发领域,尤其是Web应用开发中,SSI(Server Side Include)通常指的是服务器端包含技术,但在本文档的上下文中,SSI可能更多地是指一种整合了Spring、Struts...

      DWR2.0 整合Spring2.0

      DWR2.0可以通过Spring的AOP支持来实现这些功能,提升应用程序的安全性和可维护性。 3. **安全性**:DWR提供了安全机制,如白名单和签名,以防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。整合Spring后,可以通过...

      ajax实现登陆二级联动增删改查

      本教程将深入探讨如何利用Ajax实现登录系统的二级联动功能,以及增删改查操作。 首先,我们要理解Ajax的核心概念。Ajax并不是一个单一的技术,而是一组技术的集合,包括JavaScript、XML、HTML、CSS以及DOM等。在...

      DWR2.0 中文手册

      **DWR 2.0 中文手册** DWR (Direct Web Remoting) 是一个开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,类似于Ajax技术,但提供了更强大的功能。DWR 2.0版本是在DWR 1.x...

      struts2.0与dwr开发实例

      Struts2.0和DWR(Direct Web Remoting)是两个在Web开发中常见的开源框架。Struts2.0作为MVC(Model-View-Controller)框架,主要用于构建企业级的Java Web应用,而DWR则是一种使得JavaScript可以与服务器端Java对象...

    Global site tag (gtag.js) - Google Analytics