2013-02-13 50 views
6

嗨,有人可以幫助爲什麼當嘗試顯示JSP頁面中的值時會出現錯誤。我沒有任何數字被轉換或字符串轉換爲數字,但是我得到NumberFormatException的java.lang.NumberFormatException:對於JSP中的輸入字符串頁面

我的servlet獲得的請求來顯示用戶記錄

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 
    } 

DAO:

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 Page

<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.getParameter(「userid」))'在你的代碼中。 – jlordo 2013-02-13 16:41:59

+0

但這不是給我任何錯誤..我能夠將它放在用戶對象沒有任何錯誤,並且Hibernate已經拉出了記錄(我檢查了列表的大小)。當請求進入JSP頁面時發生錯誤。 – VBJ 2013-02-13 16:43:53

+1

userRecords是用戶列表,您需要遍歷userRecords以獲取每個用戶 – orangegoat 2013-02-13 16:50:12

回答

18

的這裏

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

${userRecords}List<User>,但是你嘗試,就好像它是一個單一的User訪問它。這是無效的。在EL中,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。那些下劃線實際上不是Java-ish。

相關問題