簡體   English   中英

java.lang.Integer.parseInt(未知源)null request.getParameter

[英]java.lang.Integer.parseInt (Unknown Source) null request.getParameter

我有一個帶有servlet的休眠應用程序。 看來我無法從請求中獲取Int或將其添加到會話中。 但是如何? 我想在我的HQL代碼中使用它。 我只是通過將所有Integer替換為String來解決問題,但是HQL無法對此做出反應。

我想比較整數。

  1. 從jsp 數字輸入類型獲取價格(我使用數字輸入)
  2. servlet將通過請求變量來制造變量(與String配合使用)
  3. 使用變量作為Java函數的輸入
  4. 將它們作為HQL參數傳遞(適用於String,但我無法比較String vars)

我需要整數。

我有商品

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中使用錯誤的輸入作為價格解決了我的問題,而我的代碼中沒有任何檢查內容。 我在正確的代碼中使用了pricelpriceh名稱,但錯誤的名稱是另一個。 JSP或html中使用的名稱必須彼此對應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM