2013-02-13 118 views
6

में इनपुट स्ट्रिंग के लिए हाय कोई कृपया मदद कर सकता है कि जेएसपी पृष्ठ में मान प्रदर्शित करने का प्रयास करते समय यह कोई त्रुटि क्यों दे रहा है। मैं फिर भी मैं NumberFormatExceptionjava.lang.NumberFormatException: जेएसपी पेज

मेरी सर्वलेट एक उपयोगकर्ता रिकॉर्ड प्रदर्शित करने के लिए अनुरोध हो रही पाने के किसी भी संख्या परिवर्तित कर दिया गया या स्ट्रिंग संख्या में बदल दिया गया नहीं है,

if(action.equalsIgnoreCase("update")){ 
     System.out.println("Came into Update"); 
     userId=(int) Integer.parseInt(request.getParameter("userid")); 
     nbId=request.getParameter("nbId").trim(); 
     System.out.println("User iD and NBid: "+ userId + nbId); 

     User user=new User(); 
     user.setUser_id(userId); 
     user.setUser_nbk(nbId); 



     List userRecords=UserDAO.getUserRecord(user); 
     request.setAttribute("userRecords", userRecords); 
     List owningOrg=Owning_Org_DB.getOwningOrgRecords(); 
     request.setAttribute("owningOrg", owningOrg); 
     request.getRequestDispatcher("WEB-INF/JSP/TableMaintenance/UserNewAdd.jsp").forward(request, response); 

POJO:

@Entity 
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
    public class User { 

@Id 
private int user_id; 
private String user_first_name; 
private String user_middle_name; 
private String user_last_name; 

     //getters and setters methos 
    } 

डीएओ:

public static List getUserRecord(User obj){ 

    Logger lo=LoggerFactory.getLogger("UserDAO.getUserRecord"); 
    Session session= Annotationsessionfactory.getAnnotationSession(); 
    Transaction tx=session.beginTransaction(); 

    lo.debug("Request for A user Record"); 
    //List<User> recList=new ArrayList<User>(); 
    List recList=null; 
    try{ 

     //String userRecord="from User"; 
     Criteria userList=session.createCriteria(User.class) 
       .add(Restrictions.eq("user_nbk", obj.getUser_nbk())) 
       .add(Restrictions.eq("user_id", obj.getUser_id())); 



     recList=userList.list(); 
     System.out.println(recList.size()); 

    }catch (Exception e){ 

     lo.info("Exception Occured in UserDAO.getUserRecord"); 
     lo.debug("Exception Occured in UserDAO.getUserRecord:"+e); 
     tx.rollback(); 

    }finally{ 

     session.close(); 

     lo.info("Session Closed in UserDAO.userRecordslist finally block: "); 
    } 

    lo.debug("Record was sent to the requesting servlet or method: "+ recList); 
    return recList; 

} 

JSP पृष्ठ

<table> 
<tr> 
    <td>First Name</td> 
    <td><input type="text" id="firstname" name="firstname" maxlength="80" value="">${userRecords.user_first_name}</td> 
</tr> 
<tr> 
<td>Middle Name</td> 
<td><input type="text" id="middlename" name="middlename" maxlength="80" value="${userRecords.user_middle_name}"></td> 

....... 

अपवाद मैं:

SEVERE: Servlet.service() for servlet jsp threw exception 
**java.lang.NumberFormatException: For input string: "user_first_name"** 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
at java.lang.Integer.parseInt(Integer.java:447) 
at java.lang.Integer.parseInt(Integer.java:497) 
at javax.el.ListELResolver.coerce(ListELResolver.java:166) 
at javax.el.ListELResolver.getValue(ListELResolver.java:51) 
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) 
at org.apache.el.parser.AstValue.getValue(AstValue.java:123) 
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) 
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938) 
at org.apache.jsp.WEB_002dINF.JSP.TableMaintenance.UserNewAdd_jsp._jspService (UserNewAdd_jsp.java:77) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) 
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) 
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) 
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) 
at com.servicedbUpdate.UserUpdateDB_NewAdds.doPost(UserUpdateDB_NewAdds.java:79) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) 
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600) 
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703) 
at java.lang.Thread.run(Thread.java:619) 
    Feb 13, 2013 10:30:49 AM org.apache.catalina.core.StandardWrapperValve invoke 
    SEVERE: Servlet.service() for servlet UserUpdateDB_NewAdds threw exception 
     **java.lang.NumberFormatException: For input string: "user_first_name"** 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
at java.lang.Integer.parseInt(Integer.java:447) 
at java.lang.Integer.parseInt(Integer.java:497) 
at javax.el.ListELResolver.coerce(ListELResolver.java:166) 
at javax.el.ListELResolver.getValue(ListELResolver.java:51) 
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) 
at org.apache.el.parser.AstValue.getValue(AstValue.java:123) 
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) 
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938) 
at org.apache.jsp.WEB_002dINF.JSP.TableMaintenance.UserNewAdd_jsp._jspService(UserNewAdd_jsp.java:77) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) 
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) 
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) 
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) 
at com.servicedbUpdate.UserUpdateDB_NewAdds.doPost(UserUpdateDB_NewAdds.java:79) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) 
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600) 
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703) 
at java.lang.Thread.run(Thread.java:619) 
+3

'Integer.parseInt (request.get पैरामीटर (" userid "))' आपके कोड में है। – jlordo

+0

लेकिन यह मुझे कोई त्रुटि नहीं दे रहा है..मैं इसे बिना किसी त्रुटि के उपयोगकर्ता ऑब्जेक्ट में रखने में सक्षम था और हाइबरनेट ने रिकॉर्ड खींच लिया है (मैंने सूची का आकार चेक किया है)। जब अनुरोध जेएसपी पृष्ठ में जा रहा है तो त्रुटि हो रही है। – VBJ

+1

उपयोगकर्ता रिकॉर्डर्स उपयोगकर्ताओं की एक सूची है, आपको प्रत्येक उपयोगकर्ता को प्राप्त करने के लिए उपयोगकर्ता रिकॉर्ड्स के माध्यम से पुन: प्रयास करने की आवश्यकता है – orangegoat

उत्तर

18

यहाँ

${userRecords.user_first_name} 
${userRecords.user_middle_name} 

${userRecords} एक List<User> है, लेकिन आप के रूप में अगर यह एक एकल User है यह तक पहुँचने का प्रयास कर रहे हैं। यह मान्य नहीं है। ईएल में, एक List केवल एक पूर्णांक सूचकांक के साथ पहुँचा जा सकता है, सूची आइटम की स्थिति में आप एक्सेस करना चाहते हैं यह दर्शाता है, इसलिए

${userRecords[0].user_first_name} 
${userRecords[0].user_middle_name} 

अपवाद भी मूल रूप से कह रहा है यह एक पूर्णांक मान के बजाय उम्मीद है कि जैसे एक स्ट्रिंग मान का। यदि आप स्टैक ट्रेस के करीब देखते हैं, तो आप देखेंगे कि ListELResolver शामिल है।

हालांकि, आपकी ठोस समस्या बड़ी है। आपको वास्तव में सूची में पुनरावृत्ति करना चाहिए। इसके लिए JSTL<c:forEach> का उपयोग करें। जैसे (अपने अजीब कोड स्निपेट से सरलीकृत):

<table> 
    <c:forEach items="${userRecords}" var="user"> 
     <tr> 
      <td>${user.user_first_name}</td> 
      <td>${user.user_middle_name}</td> 
     </tr> 
    </c:forEach> 
</table> 

(ध्यान दें: ध्यान में XSS attack hole रखने अगर आप वास्तव में उन्हें इनपुट मानों के रूप में पुन: प्रदर्शित करने का इरादा)

वैसे, मैं पर काम करेंगे आपका Java code conventions। वे अंडरस्कोर वास्तव में जावा-आश नहीं हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^