第一次整理需求、修改、添加功能整了一个多星期,接近两个星期。
客户需求:
1、在前端显示页面增加编辑功能选项。
2、编辑功能选项用来修改最后到期时间。
3、修改完成后会有提交功能,将新的数据保存到数据库中。
4、如果可以在是否提醒选项中,选项为是便隐藏下方的修改到期时间栏,选项为否,将修改栏展出。
写前端和后端都出现了多方面的问题,主要原因在于基础不牢靠,技术力不够,照搬地方多,原理不懂没细看,倒是很多地方出错。
首先自己写的Update层注意set/get, 以及Upadate方法的编写
public class GpsFirstOnUpdate extends BaseDoAction {
private Integer id;
private Timestamp expireTime;
private Integer isRemindSn;
@Override
public String doAction() {
if (!checkBefore()) {
return SUCCESS;
}
IGpsFirstOnDetails gpsFirstOnDetails = GpsFirstOnOverClass.getFactory().createQuery().single(id);
gpsFirstOnDetails.setExpireTime(expireTime);
gpsFirstOnDetails.setIsRemindSn(isRemindSn);
try {
gpsFirstOnDetails.update();
setNormal(1);
setMsg("修改成功");
} catch (Exception e) {
e.printStackTrace();//打印日志..
setNormal(0);
setMsg("修改失败");
}
return SUCCESS;
}
private boolean checkBefore() {
System.out.println();
if (id == null) {
setNormal(0);
setMsg("id不得为空");
return false;
}
if (expireTime == null) {
setNormal(0);
setMsg("即将到期时间不得为空");
return false;
}
return true;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Timestamp getExpireTime() {
return expireTime;
}
public void setExpireTime(Timestamp expireTime) {
this.expireTime = expireTime;
}
public Integer getIsRemindSn() {
return isRemindSn;
}
public void setIsRemindSn(Integer isRemindSn) {
this.isRemindSn = isRemindSn;
}
}
首先自己定义了变量,对应数据库的表里的字段,同时也是编辑功能所需要的字段。
(不要添加多余的变量 用不到就不添加 以防出错 比如方法参数选用了错误的变量)
在前端页面 对标签做详细了解,jQuery json的方法也不怎么熟悉,导致页面编写困难,js逻辑页面也多半是复制粘贴,但是后面查了对应方法的功能,建议以后写代码配合注释。
映射页面:
<class name="com.air.model.GpsFirstOn" table="gps_first_on">
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<property name="sn" type="java.lang.String">
<column name="sn" length="11" not-null="true">
<comment>sn号</comment>
</column>
</property>
<property name="pid" type="java.lang.Integer">
<column name="pid" not-null="true">
<comment>公众号id</comment>
</column>
</property>
<property name="ownerId" type="java.lang.Integer">
<column name="owner_id" not-null="true">
<comment>小区管理员id</comment>
</column>
</property>
<property name="agentId" type="java.lang.Integer">
<column name="agent_id" not-null="true">
<comment>代理商id</comment>
</column>
</property>
<property name="firstOnTime" type="java.sql.Timestamp">
<column name="first_on_time" length="19" not-null="true">
<comment>dtu第一次心跳时间,redis里第一次有心跳数据为准</comment>
</column>
</property>
<property name="expireTime" type="java.sql.Timestamp">
<column name="expire_time" length="19" not-null="true"/>
</property>
<property name="remindStatus" type="java.lang.Integer">
<column name="remind_status" length="11" >
</column>
</property>
<property name="isRemindSn" type="java.lang.Integer">
<column name="is_remind_sn" not-null="true">
<comment>是否设置sn提醒</comment>
</column>
</property>
</class>
这里是通过配置页面,将数据库中的字段与Java中的同名变量进行映射,注意映射路径和名字不要弄混淆。
在添加修改功能时,碰到的BUG、异常以及解决方法。
500:空指针异常:因为自己只写了update类,其他接口的retrun方法为空,导致经常无法获得返回值,以后碰到此类问题,现将相关的所有接口类全部看一遍,以防漏写。
前端页面的跳转失败,以及不显示问题:
红箭头标识的地方为指向类,跳转的方向一度写错导致显示为空。
jQuery SQL JSP 等多个方面需要加强学习 另外 写一篇个人仅见的文章 用于记录 公司常用问题解决