项目问题总结1

2016.10.10
*1.js文件中对function的定义要放到$(function() {。。。 })之外的地方才能够调用(这次是在引用此js文件的jsp中调用的 "javascript:jxLogPrint();")
*
*2.spring MVC框架后台返回json数据的方法前要加上@ResponseBody注解前台有时候才能解析(这次是前台是easyUI的表格读取数据时,不加此注解就无法展现数据)
*
*3.easyUI表格列中的formatter函数中要向一个a标签的点击事件所调用的函数中传递一个json对象,要先将此json对象转化后所调用的函数才能识别此参数。(row1为此参数)
*formatter: function(value, row1, index) {
*                        var href = "";
*                        row1.NAME = row.NAME;
*                        var json = JSON.stringify(row1);
*                        href += "<a href='javascript:void(0);' title='学时情况汇总' οnclick='modify("+json+")'>";
*                        href += "修改</a>&nbsp;&nbsp;";
*                        href += "<a href='javascript:void(0);' title='学时情况汇总' οnclick=deleteCoachEducation('" + value + "')>";
*                        href += "删除</a>";
*                        return href;
*                    }
*
*4.iframe 标签中的页面其中的js请求如果是页面跳转(如location.href 后台返回一个jsp页面)后台返回的jsp页面只会刷新 iframe 标签中的内容,而不会刷新整个页面。可以利用这一点进行局部更新,效果跟ajax相似。
*
*5.从数据库查询出的值要转换后给对象赋值时可以通过map来转换(如把0,1转换成男,女 fileStudent.setSex(AppConst.SEX_MAP.get(fileStudent.getSex()));)。
*
*6.IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情 应该是这样
*
*7.ajax中参数为表单中的值得时候,data: $(' #myForm ').serialize(),可以这样写参数,后台还是根据表单控件的name属性获取值。jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化。这样,我们就可以把序列化的值传给ajax()作为url的参数,轻松使用ajax()提交form表单了,而不需要一个一个获取表单中的值然后传给ajax()
*
*8.var isAddDrv =  "${addObj.isAddDrv}";// js 中读取后台返回的数据的方式(这个项目时在springmvc的model设置的这个对象addObj)
*
*9.获取各种路径:
*用的是:HttpServletRequest request
*request.getRealPath("/")--E:\soft\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\AY\
*request.getLocalAddr()--127.0.0.1
*request.getContextPath()--/aykj
*request.getRemoteAddr()--127.0.0.1
*request.getRequestURI()--/aykj/zjjFileStudent/testPath
*request.getServletPath()--/zjjFileStudent/testPath
*request.getRequestURL()-- http://127.0.0.1:8080/aykj/zjjFileStudent/testPath
*request.getRealPath("/public/temp/fileUpload/")--E:\soft\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\AY\public\temp\fileUpload
*
*10.ajax请求在spring MVC框架中,后台返回一个map前台才能进入success回调函数中(项目中是这样)
*$(" #sendObject ").click(function(){
*                var obj = new Object();
*                obj.a = "1";
*                obj.b = "2";
*                
*                // 提交数据
*                $.ajax({
*                        cache: false,
*                        dataType:'json',
*                        type: "POST",
*                        url: "testObj",
*                        data: obj,
*                        success: function(data) {
*                                alert("a="+data.a+" b="+data.b);
*                                
*                        }        
*                });
*                
*        });
*
*@ResponseBody
*        @RequestMapping(value = "testObj")
*        public Map<String, Object> testObj(BigDecimal id, HttpSession session, HttpServletRequest request, Model model) {
*                Map<String, Object> resultMap = new HashMap<String, Object>();
*                
*                String a = request.getParameter("a");
*                String b = request.getParameter("b");
*                
*                System.out.println("a:"+a+" b:"+b);
*                
*                model.addAttribute("a", a);
*                model.addAttribute("b", b);
*                
*                //resultMap.put("msg", "success");
*                resultMap.put("a", a);
*                resultMap.put("b", b);
*
*                return resultMap;
*        }
*
*11.var div = document.createElement("div"); 创建html元素
*gps_map.js中还有类似的操作可以学习
*
*12.window.frames['if_map']选取一个id号为if_map的iframe标签
*window.frames['if_map'].set_first(2);选取的同时调用其中的函数
*
*13.easyui获取当前选中行的数据时,要注意列名的大小写,今天先用大写获取不到,后改成小写获取到了。
*var row = $(" #maingrid ").datagrid("getSelected"); // 获取选中的行
*
*14.hibernate今天在dao层使用update方法更新不了数据,原因是没有加上事务(但后来几天去掉事务貌似也可以正常运行)。加上事物之后就可以正常的更新了。
*@Override
*        public void update(Object t) throws Exception {
*                Session session = getSession();
*                Transaction tx = session.beginTransaction();
*                session.update(t);
*                session.flush();
*                tx.commit();
*                session.close();
*        }
*
*15.为了避免前台一次性加载的js代码太多或者是因为后台拼装js代码更方便,可以考虑部分代码由后台返回,前台用js的eval函数来执行。
*function show_school_area(){
*                        schools=parent.getSchoolChk();                
*                        var ayids=schools.join(',');                                
*                        if(schools.length>0){
*                                $.post(path+"/aygps/bmap?querySchoolArea", {ayids:ayids},
*                                                function(data){                
*                                                if(data!=null && data!=''){
*                                                        eval(data);// 执行后台返回的js代码(在地图上添加驾校区域的覆盖物)
*                                                }
*                                });
*                        }
*                }
*使用iframe标签通过后台返回页面来显示标签中的内容应该也是出于同样的考虑以及局部刷新(iframe标签内的内容)。还有一个好处是可以减少同一个页面的代码量跟js从另一个文件导入是一样的道理。
*
*16.var point = new BMap.Point(116.404, 39.915);
*Point类描述了一个地理坐标点,其中116.404表示经度,39.915表示纬度
*而Latitude表示纬度,Longitude表示经度,所以缩写起来应该是 lng 在前,lat在后。在此标记一下,以免之后犯同样的错误!
*
*17.hh24:mi:ss与hh24:mm:ss的区别
*问题:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
*select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from dual;
*解答:
*'yyyy-mm-dd hh24:mi:ss':mi 分钟 
*'yyyy-mm-dd hh24:mm:ss':mm 月份 其中两个都是月份
*
*18.
*java.lang.Error: Unresolved compilation problem: 
*        The method list(MVCUser, int, int, String) of type LoginServiceImpl must override or implement a supertype method
*这个问题今天是由于在myeclips里改了程序,tomcat没有把项目卸载了重新部署导致。(代码估计编译不全)
*
*19.$(' #form1 ').form('clear');应该是easyui用来清除整个表单中的值
*   $(' #form1 ').form('load',data.data);应该是easyui用来将数据加载到表单中
*
*20.var tbody = $(" #appendList  tbody", parent.document);通过此方式选取iframe标签页面的父页面的对象
*window.parent.document.getElementById("uppath")这种方式也可以选取父页面元素
*
*21.今天自己项目中使用my97datepicker时出现路径错误问题,解决办法是使用了绝对路径
*<script type="text/javascript" src="<%=basePath%>/H-ui.admin_v2.5/lib/My97DatePicker/WdatePicker.js"></script>
*
*22.今天自己项目里面有个跳转页面打开老是乱码,但其他页面显示正常。试了很多方法。结果最后把此页面引入的common.jsp文件里面的:
*<%@ page language="java" pageEncoding="UTF-8"%>
*<%@ page contentType="text/html;charset=UTF-8"%>
*<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
*这三行移动到跳转的页面本身上面就好了。
*
*23.shiro框架配置文件中
*<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
*                <property name="securityManager" ref="securityManager" />
*                <property name="loginUrl" value="/login.jsp" />
*                <property name="successUrl" value="/index.jsp" />
*                <property name="filterChainDefinitions">
*                        路径后面是过滤器的名字,可以是框架自带的,也可以是自己覆盖的并把自己重写的过滤器加入到下方filters标签中
*                        <value>
*                                / = anon
*                                /public/** = anon
*                                /captcha = anon
*                                /logout = logout
*                                /** = sys
*                        </value>
*                </property>
*                <property name="filters">
*                        <map>
*                                此处应该是自己定义的filter
*                                <entry key="sys" value-ref="sysFilter" />
*                                <entry key="logout" value-ref="logoutFilter" />
*                        </map>
*                </property>
*        </bean>
*
*24.eclipse里报:An internal error occurred during: "Building workspace" Java heap spa
*导入项目时把ext框架之类的大数据量的东西先删除,导入后再加进去。
*
*25.maven工程在eclipse非正常关闭后无法正常使用(无线building workplace等),将工程复制后,删除eclipse和工作空间,重新安装后导入项目。
*
*26.NamedParameterJdbcTemplate来进行查询感觉比hibernate的sqlquery要方便?
*
*27.easyui的表单可以自动填充数据,api中有。
*
*28.Servlet.service() for servlet [springmvc] in context with path [/ssm1] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [springMVC.bean.MVCUser]: No default constructor found; nested exception is java.lang.NoSuchMethodException: springMVC.bean.MVCUser.<init>()] with root cause
*java.lang.NoSuchMethodException: springMVC.bean.MVCUser.<init>()
*原因是在bean类里面加了构造器后,没有了默认的构造器,springmvc后台在接收前台参数时无法初始化此对象MVCUser 
*@RequestMapping(value = "list")
*        @ResponseBody
*        public IPage list(MVCUser user, int page, int rows, String conditions) {
*                return loginService.list(user, page, rows, conditions);
*        }
*
*29.自己项目中加入的quartz框架执行定时任务时,每次执行时会重复执行两次。解决办法:
*将web.xml下的:
*   <listener> 
*      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
*    </listener>
*  
*    <context-param>
*       <param-name>contextConfigLocation</param-name> 
*       <param-value>/WEB-INF/local-servlet.xml</param-value>  
*     </context-param>
*删掉即可。
*
*30.今天自己项目中使用百度地图时不显示地图。原因是显示地图的div没有加宽高的样式,在<head>标签中加入:
*<style type="text/css">
*        body, html, #allmap  {width: 100%;height: 100%;overflow: auto;margin:0;font-family:"微软雅黑";}
*        </style>
*后可以正常显示地图了
*
*31.mysql的sql语句分页函数limit要在排序函数order后面。
*limit a,b 中a表示起始元素的位置(从0开始),b表示取几个元素(也就是一页有几条数据)。
*以后这种sql语句的问题直接在工具上面测试就好,比较直接。
*
*32.今天项目里面统计总条数的sql语句因为加了order by 后出错,去掉就好了
*
*33.highcharts数据列里面可以增加额外的自己定义的数据:见api中数据列-增加额外变量
*tooltip:{
*            formatter:function(){
*                return '<b>' + this.series.name + '</b>: y=' + this.y + ', extra='+this.point.extra;
*            }
*        },
*        series: [{
*            data: [
*                {y:29.7,extra:'hhh'},
*                {y:71.5,extra:'2333'},
*                {y:106.4,extra:'1122'},
*                {y:129.2,extra:'vvvv'}
*            ]
*        }
*以上是定义和读取方式要用this.point来读取(这个是以前pbc项目里面梁哥解决的一个问题,今天自己解决了lol 2016.11.2)
*
*34.今天驾培项目用驾校账号和运管账号测试时老是查询出的数据不对。原因是两个账号都在同一个浏览器里面登陆的,浏览器缓存引起的问题,浪费了很多的时间和精力,以后一定要注意。
*还有今天的项目用360浏览器时,要调成ie8的兼容模式有些数据列表才能显示,有些页面才能正常显示,这里今天也耗费了很多时间和精力,以后一定熟悉
*
*35.easyui 中的column读取后台数据时要区分大小写。
*
*36.使用hibernate的sql查询的时候好像有些参数不能使用query.setParameter(i, params.get(i));的方式来设置。
*比如 order by ? ?和 in(?)就不行。
*
*37.今天用lodop打印控件时,打印的内容的css样式无法显示。原因是lodop控件只能识别写在元素自己身上的css样式,其他地方引用的css样式无法识别。
*
*38.今天项目里面后台返回的date对象在前台显示时有时分秒,但此处只需要显示年月日。
*(jsp页面第一行是引入)
*<%@taglib prefix="fmt" uri=" http://java.sun.com/jsp/jstl/fmt "%>
*
*(fileCar是后台传过来的,你放到request或者session都可以)
*<fmt:formatDate value="${fileCar.scrappedDate}" pattern="yyyy-MM-dd"/>
*
*要是没有用struts2框架的话需要引入这个包才可以jstl-1.2.jar
*
*39.今天用navicat链接MySQL时发现,查询结果无法直接修改,那可真是一件很麻烦的事,经过无数百度谷歌之后,终于找到了solution,再次share一下。
*在navicat中,如果表里面没有设置primary key的话,是无法直接修改的。所以,你只需要添加一列id,设置为primary key并且自动递增,刷新一下,就OK了。
*
*40.今天用el表达式"${obj.linkManTel}"这种形式读取后台数据时,前台总要显示字符双引号(""),改为<c:out value="${obj.linkManTel}" default=""/>
*这种形式后就好了。
*
*41.navecate 中的id号位数过长时(今天的项目中是28位的numerical)会使用科学计数法,后面若干位当做0.会导致插入数据和查询数据出现问题,因为后面若干位都当做0后,在id号这一栏就会有很多相同数据而导致主键重复。使用pgadmin则没出现这个问题,能正常使用。
*
*42.今天用lodop时,页面显示正常,但使用lodop预览是表格只有最外面的边框,里面格子不显示边框。将<table border="1"
*style="text-align: center; width: 100%; border-collapse: collapse;">换成<table  border="1" cellspacing="0" cellpadding="0">后正常了。
*
*43.今天在页面里面引入了lodop的js文件后,调用lodop的方法var x = getLodop(),老是提示找不到方法,文件路径没有问题,在浏览器的控制台的resource里面也没有加载此js文件。原因是之前此js文件的引入是在jsp文件的head标签里面,位于jsp的上部。后来将此引入移动到var x = getLodop()的上面紧挨着,就正常了。原因不清楚。
*貌似因为var x = getLodop()这一部分的js是写在body标签里面的而不是html标签里面的。
*
*44.方法中使用参数前一定要考虑对参数的值的要求范围和可能出错的情况,比如为null或0之类的。今天项目有个地方截取字符串之前就忘记了null的判断。
*
*45.今天升级项目时,有一个controller里面注解注入的interface由于在正式服务器上面没有更新,所以在本地将此interface的注解注释了,以及用到此注解接口的方法也注解了,但在服务器运行时报错。原因是次controller的引入包的地方(文件上方import)还引入了这个注解接口忘记注释掉了。
*
*46.今后修改项目时(ay),不能只关注自己修改的类,涉及到的其他类也要关注一下,有可能这些相关类在你本地开发环境和服务器上面的更新不是同步的。
*
*47.今天使用easyui的打开对话框来显示打印页面,当没有安装打印控件时会在页面出现提示安装打印控件的一段文字。这段文字应该出现在打印页面的弹出对话框里面,但今天出现在了弹出框的父页面,导致弹出框的按钮无法操作。原因是之前弹出框的content属性里面没有使用iframe标签,导致弹出框是原页面的一部分,因而安装打印控件的提示出现在了原来的页面,后改为如下写法后,正常了:
*art.dialog({
*                                 title:"组织机构及设施详情打印",
*                                 id:"orgAndInstallation",
*                                 lock:true,
*                                 content : '<iframe width="750" frameborder="0" height="620" src="'+url+'"></iframe>'
*                         });
*
*48.47中的打印页面无背景色,背景为透明且上方的关闭按钮显示为一个横条,原因为引入的css文件有问题更改后正常。(不能太相信别人给你的东西)
*原来引用方式(别人写的):
*<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/public/common/libs/easyui/themes/gray/easyui.css" />
*        <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/public/common/libs/easyui/themes/icon.css" />
*         <link rel="stylesheet" type="text/css" href="${ctx}/public/ayjp/common/school/css/common.css" />
*        <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/public/common/common.css" />
*改为:
*<link rel="stylesheet" type="text/css" href="${ctx}/public/common/libs/easyui/themes/gray/easyui.css">
*<link rel="stylesheet" type="text/css" href="${ctx}/public/common/libs/easyui/themes/icon.css" />
*<link rel="stylesheet" type="text/css" href="${ctx}/public/common/libs/artDialog/skins/default.css"/>
*<link rel="stylesheet" type="text/css" href="${ctx}/public/common/common.css"/>
*
*49.今天用 gradle cleanidea eclipse 命令将从github下载的spring源码进行编译是报错:
*com/android/dx/command/Main : Unsupported major.minor version 52.0
*解决办法:将jdk7换成jdk8重新编译通过
*解决方法是在stackoverflow上面找到的,这上面比国内的那些解决方案的网站靠谱!
*
*50.在研究spring源码时导出了bean和core两个工程。在bean工程里面建了一个类,但main方法无法运行,报错:错误: 找不到或无法加载主类。解决方法:在项目名上右键 -> Builder Path -> Configure Build Path -> 选择libraries面板,将里面有红叉的jar包remove掉就好了(这两个jar包应该是不用的)
*后来发现这两个jar包,是需要的,我重新下载了eclipse4.6(之前是myeclipse10,不能选择jdk1.8编译,只到1.7),jdk1.8,和下载了之前报红叉的两个jar包导入后,正常了。
*
*51.eclipse导入了从公司拷回的项目后,修改了代码不起作用,试了各种方法都不行。解决办法:将项目中的.svn文件全部删除重新导入后正常。
*
*52.今天hibernate查询bean时报错:
*org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.safeluck.aycz.entity.filecarmanage.FileCarApply. Expected: class java.math.BigDecimal, got class java.lang.String
*原因是调用:
*public <T> T getEntity(Class<T> entityName, Serializable id) {
*        return (T) getSession().get(entityName, id);
*    }
*时传入的id是String类型,而在实体类里面id是BigDecimal类型。
*
*53.今天项目里面的jsp页面里面给iframe标签里面异步加载的页面元素用jquery赋值时不成功。原因是赋值语句是写在
*$(document).ready(function() { 这个里面的,原因应该是执行这个函数里面的语句时,iframe标签里面的页面还没有加载。所以解决办法就是将要执行的语句放到这个区域外面,比如某个函数里面,调用到这个函数的时候再执行这些语句,此时iframe里面的页面已经异步加载完成了。
*
*54.linux解压到当前文件夹的tar到以当前文件夹为准的相对路径:
*tar zxvf apache-tomcat-7.0.41.tar.gz -C ./ngtomcat
*ngtomcat是当前目录下的文件夹
*
*55.今天项目中用sql查询时报错:栏位索引超过许可范围:1,栏位数:0
*这个错误是说sql中的?需要用参数进行填充。但是现在给了一个参数但是却没有?位置。
*查了半天发现是我的sql中的 ?是中文的,把他改成英文就好了。
*
*56.jsp页面在用el表达式读取数据的时候要注意。如果后台返回的数据是List的,那么前天在读取的时候要写成类似 a[0].name 这种形式,也就是说要带上数组的元素位置。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页