【发布时间】:2017-04-15 04:47:37
【问题描述】:
我正在尝试使用 $.post 方法从 html 文件提交表单数据。但是,在服务器端,servlet 变得空了。没有字段为空且为空。谁能告诉我是什么问题?谢谢。顺便说一句,我在这里只显示一个字段,但实际上我在表单中有几个字段。这是我的代码:
html
<form id="reservationsForm" name="reservationsForm" method="post" action="Reservations"
class="well form-horizontal" align="left" style="width:865px;border:2px solid #000000;margin:auto;">
<br>
<div >
<div align="left" class="form-group">
<label class="col-md-2 control-label" style="font-family:sans-serif;color:black"><B>Pickup Date:</B></label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<input placeholder="Please select a date" class="form-control" type="text" id="datepicker" style="width:
238px;">
</div>
</div>
</div>
<br>
<td><label align="center" style="font-family:sans-serif;color:black"># of Stops</label></td>
<select class="form-control selectpicker" id="stops" name="stops" size="1" tabindex="14" width="150px">
<option value="0">No Stop</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div align="center">
<input onclick="send()" type="submit" name="submit" value="Send" style="font-weight:600" class="btn btn-primary">
</div>
</form>
JS
var send = function() {
var pickUpDate = document.getElementById('datepicker').value;
var totalStops = document.getElementById('stops').value;
var inputData = {"pickUpDate":pickUpDate,
"totalStops":totalStops }
$.post('http://localhost:8080/WelcomeLimoUsa/Reservations', inputData, myData, "json");
function myData(data) {
}
};
servlet
@WebServlet("/Reservations")
public class Reservations extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
if( request != null) {
System.out.println("PickUp Date is: " +
request.getParameter("pickUpDate"));
System.out.println("total Stops is: " + request.getParameter("totalStops"));
String pickUpDate = request.getParameter("pickUpDate");
Integer totalStops = Integer.parseInt(request.getParameter("totalStops"));
}else{
System.out.println("#############Request is null#########");
}
}
catch (Exception e){
e.printStackTrace();
System.out.println("Exception occured");
}
}
}
服务器端出错
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at com.welcomelimo.controller.Reservations.doPost(Reservations.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at com.welcomelimo.controller.Reservations.doPost(Reservations.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Exception occured
PickUp Date is: null
【问题讨论】:
-
您的异常与您的代码不匹配。 java servlet 中没有
Integer.parseInt。而您正试图访问名为“pickUpDate”的 GET 或 POST 变量,但没有这样的东西。您发布的是 json 结构,而不是键/值对。 -
@f1sh,我更新了帖子。 Servlet 正在从我使用 $.post() 从前端发送的查询参数中获取“pickUpDate”,其中我在 JSON 对象中包含了“pickUpDate”。
-
那么值到达servlet会有什么问题?
-
@ f1sh,我没有在服务器端得到我应该得到的值,而是在发送值时得到了 null。
标签: java jquery web-services rest servlets