博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
问卷个人总结
阅读量:4959 次
发布时间:2019-06-12

本文共 2311 字,大约阅读时间需要 7 分钟。

最近做的一个项目,遇到的问题及其总结。

项目用的是ssh+maven管理。后台的前端用的是datatables,前台前端是其他小伙伴h5写的,讲真,写的挺烂。

需求:后台管理问卷,三种问卷,计分,统计,投票。

计分类型支持单选多选,单选时可以通过选项跳入自定义的下一题,多选时只能进入下一题,计分类型独特的一点是有每一个选项的分值;

统计类型是在计分类型的基础上排除了分值新增了填空及其他选项(比如三个选项出题者设置了可以选择其他,则答卷人是可以选择其他选项来自己书写的,在完成后,发现设计数据库表时有问题,其他选项应该也设置成一个选项);

投票类型最简单,只有一题,可多选可单选可以选其他。

 

先总结一下出现的问题及解决方案。

survey-----suerveyQuestion-----suerveyOption三个表,表关联。

1.公司不允许真实删除记录,所以所有的删除功能都改为了修改功能,即在实体类后加delFlag(1删除,0没删除)。

json解析多对一的表会出现循环解析从而导致死循环。如果在getSurveyQuestionList()方法上添加@Transient,在利用网上的代码是没问题的,但是在解析时会将delflag=0和1的都解析出来。

重写getter方法,注意,不要在getSurveyQuestionList()这个基础上改,而是新建一个属性改,后期用新建的这个属性。详见代码:

1 private List
questionList; 2 3 //取消数据库绑定,因为json解析需要取消关联,所以无法排除deleteflag标识 4 @Transient 5 @OrderBy(clause = "serialNumber asc") 6 public List
getQuestionList() { 7 List
list=new ArrayList
(); 8 if(surveyQuestionList!=null && surveyQuestionList.size()>0){ 9 for(int i=0;i
questionList) {19 this.questionList = questionList;20 }
View Code

然后解析的时候,见下:

1 Survey surveyFromSql=super.getSurveyService().getSurvey(surveyId);2 //这个是从数据库取的数据,自行判断3 4 //按需求解析实体类,解除绑定5                     JsonConfig cfg = new JsonConfig();6                     cfg.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());//设置默认时间格式7                     cfg.setExcludes(new String[]{"handler","hibernateLazyInitializer"});8                     cfg.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);9                     JSONObject tmp = JSONObject.fromObject(surveyFromSql,cfg);
View Code

2.推荐使用

运用if--else if时最后要加入else判断不存在的情况,在撸码的时候还真存在所有的if没有判断的情况,避免找半天都没找到哪里有问题。

运用的有spring等框架,那么可以用其内部的一些源码,比如Assert,logger等。

能用一句sql,hql解决的绝不用两句。

前期可以不校验空值,但总结的时候必选用Assert校验。

3.前端传参到后台的时候,不支持数组里面套用数组,[[1,2,3],[4,5,6],[7,8,9]]类似于这种。

 起初我是将1~9都放在字符串里用逗号隔开然后后台解析,发现真的是麻烦,解决:

1 var answer=new Array();2 3 4 answer[i]={'questionId':questionId,'questionType':type2,'questionName':questionName,'optionId':optionId,'optionName':optionName,"txt":txt};5 6 7 var data={'surveyType':2,'surveyId':surveyId,'title':surveyTitle,'content':JSON.stringify(answer).toString(),'name':name,'mobile':mobile};8 9 //data是ajax的参数
View Code

4.其他的都是一些逻辑问题,没什么好总结的。

转载于:https://www.cnblogs.com/huangmenji/p/8385027.html

你可能感兴趣的文章
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>
Linux 标准 I/O 库
查看>>