1.controller中返回ajax方式更改
添加@ResponseBody
方法返回ResultDTO
return ResultDTO.success(agreementDTO),调用静态方法,ResultDTO封装了ajax需要的参数。
判断是否为空,StringUtils.isEmpty
@RequestMapping(value ="/queryByNo", method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public ResultDTO<AgreementDTO> queryByNo(String agreementNo) throws Exception{
AgreementDTO agreementDTO = null;
if(!StringUtils.isEmpty(agreementNo)){
agreementDTO = agreementService.getAgreement(agreementNo);
}
return ResultDTO.success(agreementDTO);
}
2.创建时编号onchange时间查询逻辑
更改前:
@RequestMapping(value ="/queryByNo", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView queryByNo(String agreementNo) throws Exception{
//判空参考http://www.cnblogs.com/shangxiaofei/p/4313111.html
//逻辑错误,不需要判断,也不能返回false。符合要求的直接调用方法即可。
if(agreementNo == null || agreementNo.equals("")){
return ajaxModelAndView(false);
}
AgreementDTO queryDTO = agreementService.getAgreement(agreementNo);
//这里本意是想塞值回去。但可以在前台处理。删去。
if(queryDTO == null){
queryDTO.setAgreementNo(agreementNo);
return newModelAndView().addObject("queryDTO", queryDTO);
}
return ajaxModelAndView(true).addObject("result", queryDTO);
}
更改后:
@RequestMapping(value ="/queryByNo", method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public ResultDTO<AgreementDTO> queryByNo(String agreementNo) throws Exception{
AgreementDTO agreementDTO = null;
//非空时直接调用即可
if(!StringUtils.isEmpty(agreementNo)){
agreementDTO = agreementService.getAgreement(agreementNo);
}
return ResultDTO.success(agreementDTO);
}
3.tiles框架内,default.jsp是模板,界面配置如下:
<div class="wrapper">
<tiles:insertAttribute name="header"/>
<!-- Left side column. contains the sidebar -->
<tiles:insertAttribute name="sidebar"/>
<!-- =============================================== -->
<!-- Content Wrapper. Contains page content -->
<tiles:insertAttribute name="main"/>
<!-- =============================================== -->
<tiles:insertAttribute name="footer"/>
</div>
其他jsp页面嵌入<tiles:insertAttribute name="main"/>
中,故这些页面只需以<div class="content-wrapper">
开始即可。
4.chrome打断点
http://han.guokai.blog.163.com/blog/static/136718271201321402514114/
5.mapper接口映射过不去
<!-- 集成Mybatis -->
<!-- Mybatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"></property>
</bean>
<!-- 自动扫描Mybatis的Mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ceair.acm.reservation.mapper" />
</bean>
其中
<!-- 自动扫描Mybatis的Mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ceair.acm.reservation.mapper" />
</bean>
mapper接口的路径和mapper.xml接口的namespace路径不同。映射失败。
6.mav模型返回jsp时,若是dto对象不能用循环遍历,不能使用<c:if test="${fn:length(insertDTO) > 0}">
,不能使用forEach遍历。
7.有问题首先看日志。
8.主键的自动生成
oracle主键的自动生成需要用到数据库的序列:SEQ_T_RES_COMMON.NEXTVAL
Mysql和。。需要用到insert属性:useGeneratedKeys。
insert时注意字段和值的次序一一对应。