1. 程式人生 > >jsp的For input string錯誤:

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程式碼,或者其他語言的程式碼時,但凡用到了封裝類的轉型,我們要考慮到被轉型的資料,是否包含類似於空格的字串。因為空格我們不容易發現,因而,從這一點說明了,我們為什麼使用框架?因為,他們把很多東西,都封裝好了,也做了資料的安全措施。