2014-02-23 4 views
1

SPRING MVC를 사용하여 JSP 파일에 사용자 목록을 표시하는 프로젝트를 개발 중입니다. 내 컨트롤러 파일이 있습니다java.lang.NumberFormatException : 입력 문자열 : "id"의 경우

Map<String, Object> model = new HashMap<String, Object>(); 
model.put("user", userService.getUser()); //userService.getUser() returns a List 

JSP 파일이 있습니다

<c:if test="${!empty user}"> 
    <table> 
    <tr> 
     <td>User Id</td> 
     <td>First Name</td> 
     <td>Last Name</td> 
     <td>Gender</td> 
     <td>City</td> 
    </tr> 
    <c:forEach items="${user}" var="user"> 
    <tr> 
    <td><c:out value="${user.id}"/></td> 
    <td><c:out value="${user.firstName}"/></td> 
    <td><c:out value="${user.lastName}"/></td> 
    <td><c:out value="${user.gender}"/></td> 
    <td><c:out value="${user.city}"/></td> 
    </tr> 
    </c:forEach> 
    </table> 
</c:if> 

위의 JSP 파일을 표시 java.lang.NumberFormatException의는 : 입력 문자열의 경우 : "아이디"가 표시됩니다. 아무도 해결책을 찾기 위해 도움을받을 수 있습니까?

대단히 감사합니다.

+1

당신은 전체의 예외 스택 추적을 게시 할 수 있을까? –

+0

'var = "u"'로 대체하고'foreach'에서'u'를 사용하면 도움이 될 수도 있습니다. –

+0

나는이 대답이 예쁘다는 것을 알고 있습니다. 늦어 지지만'foreach' 내의'user' 변수는 실제로'collection '이라고 믿습니다. 그것을 확인하십시오. – kazbeel

답변

1

NumberFormatException 문자열을 숫자로 변환하려는 시도가 실패하는 동안 발생합니다. 숫자가되어야하는 입력 데이터가 실제로 다른 것을 수신하는지 확인하십시오 (예 : 숫자로 변환 할 수없는 빈 문자열이 원인 일 수 있음).

0

먼저 좋은 규칙 : 당신은 예를 들어 복수의 이름을 지정 schould 목록을 포함하는 변수는 사용자의 목록은 이름이 "사용자"를 넣어 :

<c:forEach items="${users}" var="user"> 

이제 ""사용자가 "사용자 만의 목록을 포함 어떤 변수 알고 사용자 "는 사용자 목록의 한 항목입니다.

두 번째 규칙 : 변수가 숫자인지 여부를 확인하려면 예외를 catch하지 말고 느립니다.

heldrarocha와 데미안의 답변에 추가
if (anyString.matches("\\d+")){ 
    isANumber(); 
} 
else{ 
    notNumber(); 
} 
0

, 나는 당신의 문제는 당신이 사용자 개체에 추가하기 전에 ID를 확인하지 않는 것을 생각 : 더 빠른 것은 정규식입니다.

User의 id 변수가 정수 (또는 길거나 무엇이든)인지 확인하십시오. 이렇게하면 DB에서 채우면 rowmapper가 숫자 값을 추가합니다.

문자열이어야하는 경우 입력되는 내용이 숫자인지 확인하십시오.

은 문자열이 숫자인지 확인하는 쉬운 방법은 사용자 아파치 코 몬즈 StringUtils에 ISNUMERIC 방법이다 :

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isNumeric(java.lang.String)

관련 문제