点击提交出现500错误 ,这个问题与那位同学的一样 老师你可以说的在具体一点?
来源:5-6 提交报销单
_陈辰晨尘_
2018-10-08 16:10:02
Type Exception Report Message Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.imooc.oa.global.EncodingFilter.doFilter(EncodingFilter.java:21) Root Cause java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 java.util.ArrayList.rangeCheck(ArrayList.java:657) java.util.ArrayList.get(ArrayList.java:433) com.imooc.oa.biz.impl.ClaimVoucherBizImpl.submit(ClaimVoucherBizImpl.java:89) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy23.submit(Unknown Source) com.imooc.oa.controller.ClaimVoucherController.submit(ClaimVoucherController.java:68) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.imooc.oa.global.EncodingFilter.doFilter(EncodingFilter.java:21) Note The full stack trace of the root cause is available in the server logs.
我知道是NewArrayList这有问题 因为代码实在太多了 我真的不知道怎么去找 可以帮忙说一下 在那个位置 怎么去修改 希望 您可以给具体一点
6回答
陌路旅人
2019-03-26
建议检查一下数据库的数据,在mysql中输入查询语句,看结果
——来自刚刚解决这个问题的萌新
chrismorgen
2018-10-09
如下图所示,跟据报错提示是list集合出现数组下标越界,建议你在代码中输出olds集合和items集合的数据看一下,在执行操作的过程中,olds中的数据和items中的数据分别都是什么。祝学习愉快~

_陈辰晨尘_
提问者
2018-10-08
我把文件发给你 你看一下把
_陈辰晨尘_
提问者
2018-10-08
package com.imooc.oa.biz.impl;
import com.imooc.oa.biz.ClaimVoucherBiz;
import com.imooc.oa.dao.ClaimVoucherDao;
import com.imooc.oa.dao.ClaimVoucherItemDao;
import com.imooc.oa.dao.DealRecordDao;
import com.imooc.oa.dao.EmployeeDao;
import com.imooc.oa.entity.ClaimVoucher;
import com.imooc.oa.entity.ClaimVoucherItem;
import com.imooc.oa.entity.DealRecord;
import com.imooc.oa.entity.Employee;
import com.imooc.oa.global.Contant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service("claimVoucherBiz")
public class ClaimVoucherBizImpl implements ClaimVoucherBiz {
@Autowired
private ClaimVoucherDao claimVoucherDao;
@Autowired
private ClaimVoucherItemDao claimVoucherItemDao;
@Autowired
private DealRecordDao dealRecordDao;
@Autowired
private EmployeeDao employeeDao;
public void save(ClaimVoucher claimVoucher, List<ClaimVoucherItem> items) {
claimVoucher.setCreateTime(new Date());
claimVoucher.setNextDealSn(claimVoucher.getCreateSn());
claimVoucher.setStatus(Contant.CLAIMVOUCHER_CREATED);
claimVoucherDao.insert(claimVoucher);
for(ClaimVoucherItem item:items){
item.setClaimVoucherId(claimVoucher.getId());
claimVoucherItemDao.insert(item);
}
}
public ClaimVoucher get(int id) {
return claimVoucherDao.select(id);
}
public List<ClaimVoucherItem> getItems(int cvid) {
return claimVoucherItemDao.selectByClaimVoucher(cvid);
}
public List<DealRecord> getRecords(int cvid) {
return dealRecordDao.selectByClaimVoucher(cvid);
}
public List<ClaimVoucher> getForSelf(String sn) {
return claimVoucherDao.selectByCreateSn(sn);
}
public List<ClaimVoucher> getForDeal(String sn) {
return claimVoucherDao.selectByNextDealSn(sn);
}
public void update(ClaimVoucher claimVoucher, List<ClaimVoucherItem> items) {
claimVoucher.setNextDealSn(claimVoucher.getCreateSn());
claimVoucher.setStatus(Contant.CLAIMVOUCHER_CREATED);
claimVoucherDao.update(claimVoucher);
List<ClaimVoucherItem> olds=claimVoucherItemDao.selectByClaimVoucher(claimVoucher.getId());
for(ClaimVoucherItem old:olds){
boolean isHave=false;
for(ClaimVoucherItem item:items){
if(item.getId()==old.getId()){
isHave=true;
break;
}
}
if(!isHave){
claimVoucherItemDao.delete(old.getId());
}
}
for(ClaimVoucherItem item:items){
item.setClaimVoucherId(claimVoucher.getId());
if(item.getId()>0){
claimVoucherItemDao.update(item);
}else{
claimVoucherItemDao.insert(item);
}
}
}
public void submit(int id) {
ClaimVoucher claimVoucher = claimVoucherDao.select(id);
Employee employee = employeeDao.select(claimVoucher.getCreateSn());
claimVoucher.setStatus(Contant.CLAIMVOUCHER_SUBMIT);
claimVoucher.setNextDealSn(employeeDao.selectByDepartmentAndPost(employee.getDepartmentSn(),Contant.POST_FM).get(0).getSn());
claimVoucherDao.update(claimVoucher);
DealRecord dealRecord = new DealRecord();
dealRecord.setDealWay(Contant.DEAL_SUBMIT);
dealRecord.setDealSn(employee.getSn());
dealRecord.setClaimVoucherId(id);
dealRecord.setDealResult(Contant.CLAIMVOUCHER_SUBMIT);
dealRecord.setDealTime(new Date());
dealRecord.setComment("无");
dealRecordDao.insert(dealRecord);
}
}
chrismorgen
2018-10-08
如下图所示,报错中有提示,在ClaimVoucherBizImpl类中第89行出现问题,

你可以参考下图,我在老师的源码中标记了,建议你检查一下items集合中是否没有添加数据,如果有不明白的地方可以继续提问,祝学习愉快~

慕布斯645313
2018-10-08
你说的是哪位同学?哪个位置啊?描述的这么模糊,让别人怎么给你答具体点,都不知道你这个哪里有问题。
相似问题