java.lang.NumberFormatException:用于JSP页面中的输入字符串

嗨,有人可以帮助为什么在尝试在JSP页面中显示值时出现错误。 我没有转换任何数字或字符串已转换为数字,但我得到NumberFormatException

我的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 recList=new ArrayList(); 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页面

  .......

我得到的例外情况:

 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) 

这里是${userRecords}

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

List ,但是您尝试访问它,就像它是单个User 。 这是无效的。 在EL中,只能使用整数索引访问List ,指示您要访问的列表项的位置,如此

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

该exception也基本上告诉它期望整数值而不是字符串值。 如果仔细观察堆栈跟踪,您将看到涉及ListELResolver

但是,您的具体问题更大。 你应该实际迭代列表。 使用JSTL 。 例如(从您的奇数代码片段简化):

 
First Name ${userRecords.user_first_name}
Middle Name
${user.user_first_name} ${user.user_middle_name}

(注意:如果你真的打算将它们重新显示为输入值,请记住XSS攻击漏洞 )

顺便说一下,我会研究你的Java代码约定 。 那些下划线真的不是Java-ish。