1 修改端口:
-Dserver.port=7070 run-app
2 查询
def index(Integer max) { params.max = Math.min(max ?: 10, 100) def results=SupplierInfo.createCriteria().list(params) { if (params.userName){ like("userName",params.userName+"%") } if (params.supplierName){ like("supplierName",params.supplierName+"%") } if (params.licence){ eq("licence",params.licence) } } respond results, model: [supplierInfoInstanceCount: results.totalCount] }
3 日历控件
<asset:javascript src="plugins/bootstrap_datetimepicker/bootstrap-datetimepicker.js" />
<asset:javascript src="plugins/bootstrap_datetimepicker/locales/bootstrap-datetimepicker.zh-CN.js" />
((){ ().({ : : })})
: %: %
4 分页查询,带回查询条件
<div class="text-right"> <g:paginate total="${expressOrderInstanceCount ?: 0}"、params='[orderStatus:"${params.orderStatus}",startDate:"${params.startDate}",endDate:"${params.endDate}"]> </div>
5 异步请求查询
(id){ data = {}data[] = id.({ :: : : : .(data): (data) { (dataid) } }) } </script>
class ExpressOrderController { def printExpressOrder(@RequestBody ExpressOrderId dto ){} class ExpressOrderId { String expressOrderId } }
6 rails导出Excel
1、在 BuildConfig.groovy 中导入插件
compile ":excel-export:0.2.1"
2、导出Excel的具体实现
/** * 导出Excel * */ def export(){ def list=ExpressOrder.list()// def headers=['运单号','收件人姓名','收件人电话','目的省市县','详细地址'] def headers = [message(code: 'expressOrder.waybillNo.label'), message(code: 'expressOrder.receive.conctas.label'), message(code: 'expressOrder.receive.phoneNo.label'), message(code: 'expressOrder.receive.addr.label'), message(code: 'expressOrder.receive.address.label')] def withProperties=['waybillNo','receive.conctas','receive.phoneNo','receive.addr','receive.address'] def fileName="快递单"+yyyyMMddhhmmssSdf.format(new Date())+".xlsx" new WebXlsxExporter().with { setResponseHeaders(response,new ExcelUtil().encodeFileName(request,fileName))//防止导出Excel文件名中文乱码 fillHeader(headers) add(list, withProperties) save(response.outputStream) } }
3、工具类
class ExcelUtil { /** * <pre> * 处理下载中文文件名时出现的乱码问题 * </pre> * @param request * @param fileName * @return */ def static String encodeFileName(HttpServletRequest request,String fileName){ String agent = request.getHeader("USER-AGENT"); if (null != agent && -1 != agent.indexOf("MSIE")) { return URLEncoder.encode(fileName, "UTF-8"); }else if (null != agent && -1 != agent.indexOf("Mozilla")) { return "=?UTF-8?B?"+(new String(Base64.encodeBase64(fileName.getBytes("UTF-8"))))+"?="; } else { return fileName; } } }
7 调用百度地图定位坐标
1、main.gspy页面引用了好多没用的JS导致在做自己页面时,如果引用其他插件很容易引起JS冲突而无法使用,这个谭大师后续可能会优化模板,精简公用JS的。
2、项目其他模板页面中有很多弹出或其他不错的样式,可以借鉴查看,以免自己引用的外部插件出现冲突。
PS:百度坐标系和GPS坐标不一样,百度坐标是在GPS坐标基础上进行了加密。
// 地图部分 var map; //创建和初始化地图函数: function initMap(LongitudeId,LatitudeId) { createMap(LongitudeId,LatitudeId);// 创建地图 setMapEvent();// 设置地图事件 } // 创建地图函数: function createMap(LongitudeId,LatitudeId){ if(!map){ map = new BMap.Map("map_canvas"); var defaultLng = "104.072258";//默认经度 var defaultLat = "30.663484";//默认纬度 var flag = false; if($("#ssLongitude").val()!=""){ defaultLng = $("#"+LongitudeId).val(); defaultLat = $("#"+LatitudeId).val(); flag = true; } var point = new BMap.Point(defaultLng,defaultLat);//定义一个中心点坐标 map.centerAndZoom(point,11);//设定地图的中心点和坐标并将地图显示在地图容器中 // 移动到中心点 setTimeout(function(){ map.panTo(point); },500); if(flag){ // 加载默认标注 var markerDefault = new BMap.Marker(point); map.addOverlay(markerDefault); } //单击获取点击的经纬度 map.addEventListener("click",function(e){ map.clearOverlays(); //清除标注 var marker = new BMap.Marker(e.point);// 创建标注 map.addOverlay(marker); // 将标注添加到地图中 marker.disableDragging(); // 不可拖拽 // 回写坐标 $("#"+LongitudeId).val(e.point.lng);//经度 $("#"+LatitudeId).val(e.point.lat);//纬度 }); } } // 地图事件设置函数: function setMapEvent() { map.enableScrollWheelZoom();// 启用地图滚轮放大缩小 map.disableDoubleClickZoom();//禁用鼠标双击放大 map.enableKeyboard();// 启用键盘上下左右键移动地图 } function jumpComment() { $("#makeComment").colorbox({ width: "50%", inline: true, href: "#inline_comment" }); $("#makeComment").click(); initMap('ssLongitude','ssLatitude');// 创建和初始化地图 } </script>
<input type="button" name="getTD" onclick="jumpComment()" value="<g:message code="scenicspot.ssType.btn" />" />// 页面引入
8 目前各项目Grails框架下JS及Image静态文件存放地址说明
目前正在进行的Grails框架下的项目,在放置JS及相关静态文件时,需遵循Grails的目录规则,要放在以下目录
其中,images存放页面需要引用的图片文件,javascripts目录存放需要引用的JS文件,stylesheets存在样式文件。
文件引用方式分别为:
<asset:image src="add.jpg" />
<asset:javascript src="demo/charts.js" />
<asset:stylesheet href="bootstrap/bootstrap.css" />