무소의 뿔처럼

스프링부트) 에러기록 For input string: _ List로 담아 보냈어~ 본문

알아두기/에러

스프링부트) 에러기록 For input string: _ List로 담아 보냈어~

값을변경 2022. 8. 19. 10:13

리턴타입 확인하기.

에러
For input string:

2022-08-18 17:01:07.246 ERROR 12360 --- [nio-8085-exec-1] o.a.c.c.C.[.[localhost].[/].[jsp] : Servlet.service() for servlet [jsp] threw exception

java.lang.NumberFormatException: For input string: "company_name" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) ~[na:na] at java.base/java.lang.Integer.parseInt(Integer.java:668) ~[na:na]


Dto의 리스트를 단순히 불러와서 model에 담아 view로 보내는것이 아니고 (sql: select * from 테이블)
(sql:select * from 테이블 where idx = ${param}) 으로 조건에 충족하는 1개의 행을 불러오는 것:상세 테이블.

문제 :
너무 단순하게 생각해서 list의 Controller코드를 그대로 복사해서 상세 테이블의 Controller에 적용시킨 것

리스트는.. 코드는 아래와 같고

@RequestMapping("/list")
public List<dto> list(Model model) {

	List<dto> list = dao.list();
    model.addattribute("list",list);
    
    return "list";

dao에 detail(String idx)를 만들어 sql를 Mapping 함..

public List<dto> detail(@RequestParam("idx")String idx , Model model){


이때 For input string: 가 나타났다. ( NumberFormatException )
int로 주고받을 게 없는데 왜 paseint를 이렇게 외칠까?

구글링해도 나오지 않는다.
왜냐하면... 스프링 부트를 공부한 사람들은 이런 실수를 하지 않겠지? ㅎㅎ

dao를 수정하여 줌.

public dto detail(String idx);


controller도 수정

public void detail(@RequestParam("idx")String idx,
				Model modle){
      
      dto dto = dao.detail(idx);
      model.addAttribute("detail",dto);
     }


----------------
List로 받을 때. getClass(). getName()에 ArrayList가 consol에 찍혔음.
consol를 찍었을 때 dto와 ArrayList dto와 차이는 List는 []으로 감싸여있다.
정말 눈여겨보질 않았... 기도 했고, 한 번에 찾으려고 하면 안 되는구나..라는 것을 깨달았다.
쉬지 않으면 눈에 보이지 않고, 계속 봤던 코드라서 오류가 아닌 이상 그냥 지나치게 되더라

ㅋㅋㅋ 실수도 실수인데... 이건 솔직히 공부 안 한 거 티 난다..
이렇게 부딪치면서 공부하는게 나한텐 맞다!

더보기

LIst를 받았는데
view에서 칼럼명 dto의 한 녀석의 이름 계속 알려달라고 요구를 하는데
model은 이 리스트 중에 어떤 녀석의 이름을 가져오는거냐며 에러를 보낸 것 같다.

아마 List의 index를 외쳤던 게 아닐까..
java.lang.NumberFormatException: For input string:
나는 문자를 보냈지만
자바는 그 요청해결을 위해 어느 index인지를 보려고 숫자로 변환 시려는 시도 같은 거..

Comments