나의질문답

Ajax error나는 이유 질문드립니다.

예쁜꽃이피었으면 2015. 1. 20. 09:17

http://www.okjsp.net/seq/270416


안녕하세요.

ajax으로 데이터를 전송해서 db에 저장하려는데 error로 넘어가서 질문드립니다.



Ajax함수에서 "귤.java"로 form 데이터(여러개)를 넘깁니다.(serialize사용)

이때 넘기는 form데이터에 위,경도가 포함되는데요.

위.경도 값은 있을 수도 있고 없을 수도 있습니다. 형식은 double형입니다. 

넘길때는 object형으로 한번에 넘어간다고 하더라고요.

넘긴 값을 DB에 저장합니다. 


위.경도 값이 있을 때는 문제가 되지 않습니다.

없을 ?가 문제인데요.


"귤.java"로 데이터가 넘어갔다가 

ajax함수의

error:function으로 넘어오고 끝이 납니다.



-----------------

다른 데이터가 null값일 때는 문제가 없는데

왜 위.경도 값만 에러인지 모르겠습니다.

"귤.java"에서 데이터를 받을 때는

String latitude  = request.getParameter("latitude")== null ? "0" : request.getParameter("latitude");

이렇게 받고 있습니다.


db에 넣을 때는

usersnap  plantlist = new usersnap();

...

plantlist.setLongitude(new Double(longitude));

plantlist.setLatitude(new Double(latitude));


plantDao.getInstance().insertUserPlantList(plantlist);


이렇게 넣고요.


double형일때는 다른식으로 받아야 하나요?


------------------------------------------------------

 에러메시지는 이렇습니다.

1월 19, 2015 5:24:23 오후 org.apache.catalina.core.StandardWrapperValve invoke

심각: Servlet.service() for servlet [ControllerAction] in context with path [/plantid] threw exception [java.lang.NumberFormatException: empty String] with root cause

java.lang.NumberFormatException: empty String

at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)

at java.lang.Double.valueOf(Unknown Source)

at java.lang.Double.<init>(Unknown Source)

at plantid.plant.action.ImageSaveAction.requestPro(ImageSaveAction.java:83)

at plantid.common.controller.ControllerAction.requestPro(ControllerAction.java:100)

at plantid.common.controller.ControllerAction.doPost(ControllerAction.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)


두서없는 질문이지만.. 힌트라도 부탁드립니다.

감사합니다.



답변 1

request.getParameter("latitude")== null 

체크가 "".equals(request.getParameter("latitude")) 이거로 해보시길.. 

빈값 더블형으로 선언 할라니까 안되는거 같은데요.. 

그리고 그냥 String latitude = request.getParameter("latitude"); 

선언하시고 latitude 변수 사용 하는게 낫지 않나요?




답변 2

저 변수를 타입이나 값을 확인해보세요..



내 답

이게 맞는지는 모르겠지만 오류는 안납니다. 

<input type="hidden" name="latitude" value=""></input> 

<input type="hidden" name="longitude" value=""></input> 

이렇게 해두었던 것에 value값을 넣었습니다. 

value="${latitude}" 

value="${longitude}" 


이 value값은 안드로이드 쪽에서 받아온 값을 ajax실행전에 data에 넣는거라 비워둬야 한다고 생각했는데

그래서 값이 없을 때 문제가 생겼던 것 같습니다. 



반응형