I am going to insert data into table which also includes image files. The json data I am sending from AJAX is:
The data is send by changing file type into base64 in javascript.
Some entity of my java class are:
Letter.java
public class Letter {
private BigDecimal letterNo;
private BigDecimal letterId;
private String inout;
private String inoutNo;
private String inoutDate;
private String letterIssuedSubBy;
private String letterFile;
private String representativeName;
private String representativeNameEng;
private BigDecimal selectionId;
private BigDecimal assessmentNo;
private String entryBy;
private String rStatus;
private byte[] imageFile;
private String imageTitle;
//i ommited getters and setters
}
ProcessAssessmenttTwo.java which is my Dto class
public class ProcessAnexTwo {
private String entryBy;
private String rStatus;
private BigDecimal selectionId;
private String inout;
private String letterReceivedBy;
private String letterIssuedSubBy;
private String representativeNameEng;
private String inoutDate;
private BigDecimal letterId;
private BigDecimal assessmentNo;
private String imageFiles;
private byte[] imageFile;
private String imageTitle;
}
The data is successfully coming to the api but while inserting into the database it is showing me error :
@PostMapping("saveProcessAnexTwo")
public ResponseEntity saveAnnexTwo(@RequestBody ProcessAnexTwo processAnexTwo,Model model) {
System.out.println("entered in saveProcessAnex Two func");
String imgByte=processAnexTwo.getImageFiles();
System.out.println(imgByte);
byte[] nnn=imgByte.getBytes();
byte[] imageFile= Base64.getEncoder().encode(nnn);
System.out.println(processAnexTwo.getImageTitle());
Letter letter = new Letter(processAnexTwo.getLetterId(), processAnexTwo.getInout(),
processAnexTwo.getInoutDate(),processAnexTwo.getLetterIssuedSubBy(),null,processAnexTwo.getRepresentativeNameEng(),
null,processAnexTwo.getSelectionId(),processAnexTwo.getAssessmentNo(), "PCS",
null,imageFile,null);
BigDecimal letterNo = letterService.insertLetterAnnexTwo(letter);
return null;
}
The LetterDaoImpl class to insert is:
@Override
public BigDecimal saveLetterAnnexTwo(Letter letter) {
try {
System.out.println("hitted123 here");
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("PCPR_ADD_LETTER");
Map<String, Object> inParamMap = new HashMap<String, Object>();
System.out.println(letter.getLetterId());
inParamMap.put("P_LETTER_NO",null);
inParamMap.put("P_LETTER_ID",letter.getLetterId());
inParamMap.put("P_INOUT",letter.getInout());
inParamMap.put("P_INOUT_NO",null);
inParamMap.put("P_INOUT_DATE",letter.getInoutDate());
inParamMap.put("P_LETTER_ISSUED_SUB_BY",letter.getLetterIssuedSubBy());
inParamMap.put("P_LETTER_FILE",letter.getLetterFile());
inParamMap.put("P_REPRESENTATIVE_NAME",letter.getRepresentativeName());
inParamMap.put("P_REPRESENTATIVE_NAME_ENG",letter.getRepresentativeNameEng());
inParamMap.put("P_SELECTION_ID",letter.getSelectionId());
inParamMap.put("P_ASSESSMENT_NO",0);
inParamMap.put("P_ENTRY_BY", letter.getEntryBy());
inParamMap.put("P_R_STATUS",null);
inParamMap.put("P_IMAGE_FILE",letter.getImageFile());
inParamMap.put("P_IMAGE_TITLE",letter.getImageTitle());
SqlParameterSource in = new MapSqlParameterSource(inParamMap);
BigDecimal letterNO = (BigDecimal) simpleJdbcCall.execute(in).get("P_LETTER_NO");
return letterNO;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
The error i am getting is :
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException at java.util.Base64$Decoder.decode(Base64.java:525) at com.pcs.spring.controller.api.FormApiController.saveAnnexTwo(FormApiController.java:222) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)