jsp的For input string错误:

我们在做接jsp开发时,不论是在jsp页面,还是在controller中,都会遇到这样的错误,For input String错误,为什么会出现这样的错误呢?

当时,我在init中从数据库读取数据来初始化页面,把数据放在a标签中,如代码:

<div id="sign_tab">
        <ul>        
            <c:forEach items="${foreEndTabs }" var="tab">
    <li><a href="fore_jsp/tab_info.jsp?tid=  ${tab.tid }" class="sign_a" >${tab.tname}</a></li>  
            </c:forEach>
        </ul>   
    </div>

当我在执行时,就会报如下的错误:

org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: ” 5”
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
我需要在tab_info.jsp来获取a标签的整数参数,因而,我需要用如下代码去将其转换成整数:

List<Book> books=FEBookService.getBooksByTabId(
                Integer.parseInt((String)request.getParameter("tid")));

但是,Integer.parseInt()没有办法将其转换,这是为什么吗?经过查看它的源代码,我们发现它识别的是整数的字符串,而我们在tid= ${tab.tid }” 这里有个空格,因而,我们获取到的是“ 5”,前面含有两个空格,所以,它本身不是数字,因而,无法将其解析出来,因而,就会报出异常。我们知道了这个原理,那么就容易求解了。
我们只需要去掉空格,就会得到我们想要的“5”,这是我的运行成功后的结果:
这里写图片描述

所以,以后我们在编写java代码,或者其他语言的代码时,但凡用到了封装类的转型,我们要考虑到被转型的数据,是否包含类似于空格的字符串。因为空格我们不容易发现,因而,从这一点说明了,我们为什么使用框架?因为,他们把很多东西,都封装好了,也做了数据的安全措施。

猜你喜欢

转载自blog.csdn.net/lvoelife/article/details/78715191