Java 为什么我会收到NumberFormatException?
我做了一个按钮来改变航班的状态。但是我收到了,数字形式的感觉。下面我介绍了从数据库获取数据的方法Java 为什么我会收到NumberFormatException?,java,jsp,numberformatexception,Java,Jsp,Numberformatexception,我做了一个按钮来改变航班的状态。但是我收到了,数字形式的感觉。下面我介绍了从数据库获取数据的方法 private Flight getFlight(ResultSet rs) throws SQLException, DBException { Flight flight = new Flight(); flight.setId(rs.getInt("ID")); flight.setName(rs.getString(NAME));
private Flight getFlight(ResultSet rs) throws SQLException, DBException {
Flight flight = new Flight();
flight.setId(rs.getInt("ID"));
flight.setName(rs.getString(NAME));
flight.setStartPoint(rs.getString("STARTPOINT"));
flight.setEndPoint(rs.getString("ENDPOINT"));
flight.setNumber(rs.getInt("NUMBER"));
flight.setDepartureDate(rs.getString("DEPARTURE_DATE"));
flight.setDepartureTime(rs.getInt("DEPARTURE_TIME"));
flight.setStatus(rs.getBoolean("STATUS"));
flight.setAircompanyId(rs.getInt("AIRCOMPANY_ID"));
return flight;
}
public Flight findFlightById (int id) throws DBException{
Flight flight = null;
for (Flight f : getFlights()) {
if (f.getId() == id) {
flight = f;
break;
}
}
return flight;
}
public boolean updateFlightStatusById(int id)throws DBException{
Connection con = null;
PreparedStatement pstmt = null;
Boolean status = null;
try {
con = getConnection();
pstmt = con.prepareStatement(UPDATE_FLIGHT_STATUS);
Flight flight = findFlightById(id);
int k = 1;
if (flight.isStatus()) {
pstmt.setBoolean(k++, false);
status = true;
} else {
pstmt.setBoolean(k++, true);
status = false;
}
pstmt.setInt(k++, flight.getId());
pstmt.executeUpdate();
con.commit();
} catch (SQLException e) {
rollback(con);
throw new DBException("cannot update flight status", e);
} finally {
close(con);
close(pstmt);
}
return status;
}
然后我在另一个类中调用接收到的方法,该类返回jsp页面的路径
int id = Integer.parseInt(request.getParameter("flightId")); // here i get an exception
db.updateFlightStatusById(id);
session.setAttribute("flights", flight);
我还将提供jsp页面的一些代码
<c:forEach var="bean" items="${sessionScope.flights}">
<td><form action="controller" method="post">
<input type="hidden" name="command" value="getFlights">
<input type="hidden" name="flightId" value="${bean.id}">
<c:if test="${bean.status eq true}">
<input type="submit" value="<fmt:message key="correct"/>">
</c:if>
<c:if test="${bean.status eq false}">
<input type="submit" value="<fmt:message key="incorrect"/>">
</c:if>
</form></td>
</c:forEach>
我已经做了类似的任务,但没有这样的错误。我错在哪里了?我会感谢你的帮助
我的sql请求
私有静态最终字符串更新\飞行\状态=更新飞行集状态=?其中id= 从文档中可以看出,这非常简单
Integer.parseIntString
参数:
s—包含要分析的int表示形式的字符串
返回:
参数以十进制表示的整数值。
抛出:
NumberFormatException-如果字符串不包含可解析整数
数字格式异常
抛出以指示应用程序已尝试将字符串转换为其中一种数字类型,但该字符串没有适当的格式
如果调试代码,您会发现id变量为null或具有无法转换为整数的其他值。检查请求参数映射以查看flightId参数是否存在且不为null。那么,request.getParameterflightId的值到底是多少?异常的堆栈跟踪将告诉您它无法解析的值。没问题。如果你觉得答案是令人满意的,请考虑将它标记为接受。