[英]java.lang.NumberFormatException: null java.lang.Integer.parseInt(Unknown Source)
[英]java.lang.Integer.parseInt (Unknown Source) null request.getParameter
我有一個帶有servlet的休眠應用程序。 看來我無法從請求中獲取Int
或將其添加到會話中。 但是如何? 我想在我的HQL代碼中使用它。 我只是通過將所有Integer
替換為String
來解決問題,但是HQL無法對此做出反應。
我想比較整數。
我需要整數。
我有商品
java.lang.NumberFormatException:空
java.lang.Integer.parseInt(未知來源)
java.lang.Integer.parseInt(未知來源)
錯誤。
public class prod implements Serializable {
@Id @GeneratedValue
@Column(name = "id")
private String id;
private String catid;
private String name;
private Integer price;
public prod() {
}
public prod(String id, String catid, String name, Integer price) {
this.id = id;
this.catid = catid;
this.name = name ;
this.price = price;
}
public String getid() {
return id;
}
public void setid(String id) {
this.id = id;
}
public String getcatid() {
return catid;
}
public void setcatid(String catid) {
this.catid = catid;
}
public String getname() {
return name;
}
public void setname(String name) {
this.name = name;
}
public Integer getprice() {
return price;
}
public void setprice(Integer price) {
this.price = price;
}
}
servlet.Indexservlet
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = -8670416133536111566L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
// PrintWriter out = response.getWriter();
String catid = request.getParameter("catid");
String id = request.getParameter("id");
String name = request.getParameter("name");
Integer pricel = Integer.parseInt(request.getParameter("pricel"));
Integer priceh = Integer.parseInt(request.getParameter("priceh"));
prod dot = IndexService.getprodbyparam(catid,name,pricel,priceh);
request.getSession().setAttribute("prod", dot);
response.sendRedirect("index.jsp");
}
}
索引服務
import HibernateUtil.HibernateUtil;
import goods.prod;
public class IndexService {
public static prod getprodbyparam(String catid,String name,Integer pricel, Integer priceh) {
Session session = HibernateUtil.openSession();
Transaction tx = null;
prod prod = null;
try {
tx = session.getTransaction();
tx.begin();
Query query = session.createQuery("from prod where name=? and price between ? and ?");
query.setString(0, name);
query.setInteger(1, pricel);
query.setInteger(2, priceh);
prod = (prod)query.uniqueResult();
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return prod;
}
}
Index.jsp部分
<tr>
<td>Price h</td>
<td><input type="number" name="priceh" maxlength="100" /></td>
</tr>
<%
prod prod = (prod) session.getAttribute("prod");
%>
<b>You have<% if (null == prod) out.println("No text entered.");%></b>
<br/>
<b>selected</b>
<br/>
<%if (null!=prod) out.println(prod.getid()+ " "+prod.getname()+ " "+prod.getprice());%></b>
<br/>
錯誤原為
type Exception report
message null
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
servlet.IndexServlet.doPost(IndexServlet.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
注意:根本原因的完整堆棧跟蹤可在Apache Tomcat / 8.0.33日志中找到。
嘗試強制轉換:
Integer pricel = Integer.parseInt((String)request.getParameter("pricel"));
我通過使其在jsp中使用錯誤的輸入作為價格解決了我的問題,而我的代碼中沒有任何檢查內容。 我在正確的代碼中使用了pricel
和priceh
名稱,但錯誤的名稱是另一個。 JSP或html中使用的名稱必須彼此對應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.