2016-04-10 17 views
-1

私はサーブレットで休止状態のアプリを持っています。 要求からIntを取得できないか、セッションに追加できないようです。 どのように?私は自分のHQLコードでそれを使用したいと思います。 私はちょうどIntegerStringに置き換えて汚れたソリューションを作成しましたが、HQLはそれに反応できません。java.lang.Integer.parseInt(不明なソース)null request.getParameter

整数を比較したいと思います。 JSP 入力タイプから

  1. 取得価格(私が使用する番号入力)
  2. サーブレットはJava関数に(文字列の微細作品)を入力として
  3. 使用変数を、それらを要求することにより、変数になるだろう
  4. それらをHQL引数として渡します(Stringで動作しますが、String varsと比較できません)

整数が必要です。ヌル
java.lang.Integer.parseInt(不明なソース)
java.lang.Integer.parseInt(不明なソース)
:私は

java.lang.NumberFormatException

をgoods.prodいる

エラー。

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"); 

} 

} 

IndexService

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ログで利用可能です。

+0

例外の完全なスタックトレースを投稿できますか? –

+0

フルスタック投稿 –

答えて

0

はこれをキャストしてみてください。

Integer pricel = Integer.parseInt((String)request.getParameter("pricel")); 
+0

はい、それは動作し、私はそれを使用します。問題は間違った名前だった。 .jspやその他のファイルでは違っていました。 – ifooi

0

私は私のコードでの価格と何がそれをチェックして、それはJSPで間違った入力を使用することによって、私の質問を解決しました。私は右のコードでpricelpricehの名前を使用しましたが、間違った名前では別の名前でした。 JSPまたはhtmlで使用される名前は、互いに対応している必要があります。